如何使用MySQL从另一个表更新一个表时处理NULL

时间:2013-02-09 08:42:55

标签: mysql sql-update

我有以下代码,但它会更新table_1中的所有行,即使条件不正确(即table_1.data_1中根本不存在table_2.data_1)。如何调整以下更新语句,以便只更新table_1中与table_2中的值匹配的值?

我正在尝试将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);

1 个答案:

答案 0 :(得分: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;