SQL错误(1242):子查询返回多于1行

时间:2014-05-31 03:15:13

标签: mysql sql

我需要一种方法来遍历表并删除这样的所有内容,但这显然不起作用。

如果您需要更好的问题,请告诉我。

DELETE FROM table1 WHERE table1column = (SELECT table2column FROM table2);

2 个答案:

答案 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;
相关问题