2014-07-23 49 views
0

我无法使用WHEN和WHERE更新NULL行。我的查询出了什么问题?Sql Update使用WHEN和WHERE的NULL值

UPDATE `product` SET `city` = CASE `city` 
WHEN NULL THEN 'Gangnam' 
WHEN 'Seouls' THEN 'Seoul' 
END 
WHERE city IN (NULL, 'Seoul') 
+0

也许IFNULL? :) –

回答

4

使用IS NULL比较NULL

UPDATE `product` 
SET `city` = 
    CASE  
      WHEN `city` IS NULL THEN 'Gangnam' 
      WHEN `city` = 'Seouls' THEN 'Seoul' 
    END 
WHERE city is NULL OR city = 'Seoul' 
0

在SQL的时候,用NULL一个comparaison永远是假的,所以你必须起诉特殊的运算符IS NULL

另一种方法是分裂你查询二:

UPDATE product SET city ='江南'WHERE city IS NULL

UPDATE product SET city = 'Seouls' WHERE city = '首尔'

1
UPDATE `product` SET `city` = 
CASE 
    WHEN `city` IS NULL THEN 'Gangnam' 
    WHEN `city` = 'Seouls' THEN 'Seoul' 
END 
WHERE city IS NULL OR city = 'Seouls' 

SQL FIDDLE