我有以下代码,但它会更新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);
答案 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;