我有以下代码,但它会更新 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);
最佳答案
我还没有测试过这个,但认为这样的东西会起作用:
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;
关于mysql - 使用 MySQL 从一个表更新另一个表时如何处理 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786372/