2013-02-09 16 views
1

我有以下代碼,但它更新table_1中的所有行,即使條件不正確(即table_1.data_1根本不存在於table_2.data_1中)。如何調整以下更新語句,以便僅更新table_1中與table_2中的值匹配的值?如何在使用MySQL更新另一個表時處理NULL

我想將table_1.data_2中的所有值設置爲NULL,其中data_1值在兩個表中都是相同的。

UPDATE table_1.data_1, table_2.data_1 
SET table_1.data_2 = NULL 
WHERE table_1.data_1 = table_2.data_1 

這是我原來的帖子的更新。

UPDATE table_1.data_2 
SET table_1.data_2 = NULL 
WHERE table_1.data_1 IN 
(SELECT table_2.data_1 FROM table_2 WHERE table_1.data_1 = table_2.data_1); 
+0

[檢查NULL](http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html) – 2013-02-09 08:46:09

+0

我該怎麼做? – Ben 2013-02-09 08:46:42

+0

''「'不是'NULL'。 – 2013-02-09 08:50:17

回答

0

我沒有測試過這一點,但覺得像這樣的工作:

UPDATE table_1 SET data_2 = NULL 
    WHERE data_1 IN(SELECT table_1.data_1 
    FROM table_1, table_2 
    WHERE table_1.data_1 = table_2.data_1) 

這個資源,當我需要對如何處理一些不同的想法: http://www.artfulsoftware.com/infotree/queries.php

更新:

UPDATE table_1 
LEFT JOIN table_2 
ON table_1.data_1 = table_2.data_1 AND table_1.data_1 IS NOT NULL 
SET table_1.data_2 = NULL; 
+0

#1093 - 您無法在FROM子句中指定目標表'table_1'進行更新 – Ben 2013-02-09 09:10:56

+0

第二個如何?我現在能想到的其他事情就是臨時表。 – ficuscr 2013-02-09 09:35:43

+0

我上面的更新工作。我也會接受你的回答。乾杯 – Ben 2013-02-09 10:16:34

相關問題