如何根据与另一个表的连接从表中删除行?

时间:2015-06-02 10:30:26

标签: mysql

设置如下:

表B有一个名为task的列和另一个keyid

表C有列keyid和type。

我想要做的是删除B中的所有条目,使得B.task = C.keyid和C.type =' 1'。如果我想选择要删除的行,则查询将是:

SELECT * FROM B,C
WHERE B.task=C.keyid
AND C.type='1'

我尝试过最新的一些选项:

DELETE FROM B    
WHERE keyid IN (SELECT B.keyid FROM B,C
                WHERE B.task=C.keyid
                AND C.type='1');

这让我错误了#34;你无法指定目标表' B'用于FROM子句"

的更新

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使用explicit加入而不是implicit join,您可以使用加入删除,如下所示

delete b_t from B b_t
join C c_t on b_t.task = c_t.keyid
where c_t.type = 1 ;