关于mysql:使用Inner Joins删除

Delete using Inner Joins

所以我有了这个相关的子查询,我读到这不是最有效的方法。因此,我希望将此查询转换为内部联接查询。

1
2
3
4
5
DELETE FROM tableA
WHERE EXISTS (
           SELECT fieldA
           FROM tableB
           WHERE tableB.fieldA= tableA.fieldA)

我试过这样的方法:

1
2
3
4
DELETE a
FROM TableA a
INNER JOIN TableB b
ON a.fieldA = b.fieldA

导致了一个Error while executing SQL query on database 'DB': near"a": syntax error

我在这里的所有搜索结果都产生了大致相同的查询(类似于我尝试过的查询)。


你所发表的文章对SQL Server很有用;对于下面的MySQL应该可以做到这一点。

1
2
3
DELETE tableA
FROM tableA
INNER JOIN tableB ON tableB.fieldA = tableA.fieldA;


1
2
3
4
5
DELETE a
FROM TableA a
INNER JOIN TableB b
ON a.fieldA = b.fieldA
where 1=1

尝试使用1=1条件。

也适用于set sql_safe_updates=0;