设置如下:
表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子句"
的更新这样做的正确方法是什么?
答案 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 ;