考慮查詢(時,THEN條件號)(它運行在Oracle和MySQL的)SQL:限制對CASE
UPDATE table1
SET something_id = CASE
WHEN table1_id = 1446 THEN 423
WHEN table1_id = 2372 THEN 426
WHEN table1_id = 2402 THEN 428
WHEN table1_id = 2637 THEN 429
WHEN table1_id = 2859 THEN 430
WHEN table1_id = 3659 THEN 433
END
WHERE table1_id IN (1446,2372,2402,2637,2859,3659)
這種查詢可以得到相當大的,所以我想知道什麼是極限根據條件的數量(WHEN,THEN語句),一個查詢可以保存。有沒有辦法解決它?
例如:
我知道這可以傳遞給IN
值的最大數量爲1000,要克服這一點,我們可以做
`WHERE TABLE1_ID IN ([1000 values]) OR TABLE1_ID IN ([more values])`
WHERE子句是不必要的 - 您已經通過CASE語句中的table1_id進行篩選。 – 2009-07-21 17:13:22
WHERE子句是絕對必要的。沒有它,你會更新表中的每一行,CASE語句中沒有具體提到的那些TABLE1_ID行將被設置爲NULL。至少,這是你在Oracle中的行爲 - 我無法想象MySQL在這方面與衆不同。 – 2009-07-21 17:58:47