使用内部联接删除

时间:2017-07-17 13:37:10

标签: mysql sql-server inner-join sql-delete

所以我有这个相关的子查询,我读到这不是最有效的方法。因此,我想将此查询转换为INNER JOIN查询。

DELETE FROM tableA
WHERE EXISTS (
           SELECT fieldA
           FROM tableB
           WHERE tableB.fieldA= tableA.fieldA)

我试过这样的事情:

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

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

2 个答案:

答案 0 :(得分:1)

您发布的内容适用于SQL Server;对于MySQL下面应该做的工作

DELETE tableA
FROM tableA
INNER JOIN tableB ON tableB.fieldA = tableA.fieldA;

答案 1 :(得分:-1)

DELETE a 
FROM TableA a
INNER JOIN TableB b
ON a.fieldA = b.fieldA
where 1=1

尝试使用 1=1 条件。

还有 set sql_safe_updates=0;