我需要一种方法来遍历表并删除这样的所有内容,但这显然不起作用。
如果您需要更好的问题,请告诉我。
DELETE FROM table1 WHERE table1column = (SELECT table2column FROM table2);
答案 0 :(得分:1)
您需要使用in
而不是=
:
DELETE FROM table1
WHERE table1column in (SELECT table2column FROM table2);
编辑:
使用exists
和正确的索引通常会更快。查询是:
DELETE FROM table1
WHERE EXISTS (SELECT 1 FROM table2 WHERE table2.table2column = table1.table1column);
您需要table2(table2column)
上的索引。
答案 1 :(得分:0)
是mysql吗? 我经常做以下事情。 (因为我可以尝试选择'看看我得到了正确的行)
delete a.*
from table1 a
join table2 b on a.table1column = b.table2column;