2012-12-22 53 views
2

嗨我注意到我的SQL case語句不正確,並且將字段Age設置爲NULL爲IDS 1-3。我將如何阻止這種情況發生?將SQL Case語句設置爲NULL對於某些

感謝

UPDATE table 
SET `Name` = CASE `id` 
       WHEN 1 THEN 'Sam' 
       WHEN 2 THEN 'Adam' 
       WHEN 3 THEN 'James' 
       WHEN 4 THEN 'Chris' 
      END, 
    `Age` = CASE `id` 
       WHEN 4 THEN '22' 
      END 
WHERE `id` IN (1,2,3,4) 

回答

4

添加ELSE Age,以你的情況表達:

`Age` = CASE `id` WHEN 4 THEN '22' ELSE `Age` END 
--         ^^^^^^^^^^ 

這將導致年齡被設置回其原始值。然後

完整的查詢看起來是這樣的:

UPDATE `table` 
SET `Name` = CASE `id` 
       WHEN 1 THEN 'Sam' 
       WHEN 2 THEN 'Adam' 
       WHEN 3 THEN 'James' 
       WHEN 4 THEN 'Chris' 
      END, 
    `Age` = CASE `id` 
       WHEN 4 THEN '22' 
       ELSE `Age` 
      END 
WHERE `id` IN (1,2,3,4) 
0

您需要添加一個WHEN ... THEN 1 - 3否則不會指派任何東西。或者添加一個其他的。

2

我想你想要這樣的:

UPDATE table 
SET `Name` = 
    CASE `id` 
     WHEN 1 THEN 'Sam' 
     WHEN 2 THEN 'Adam' 
     WHEN 3 THEN 'James' 
     WHEN 4 THEN 'Chris' 
    END, 
    `Age` = 
    CASE `id` 
     WHEN 4 THEN '22' 
     ELSE Age 
    END 
WHERE `id` IN (1,2,3,4) 

沒有測試過這一點,但它應該工作。