使用内部联接删除

Posted

技术标签:

【中文标题】使用内部联接删除【英文标题】:Delete using Inner Joins 【发布时间】:2017-12-22 01:59:07 【问题描述】:

所以我有这个相关的子查询,我读到这不是解决这个问题的最有效方法。因此,我想将此查询转换为 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

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

【问题讨论】:

***.com/questions/16481379/… mysql 还是 SQL-Server? @Jens 两位请 您发布的内容应该可以在 sql server 中完美运行。 @SeanLange 也许那个错误来自 MySQL? 【参考方案1】:

您发布的内容适用于SQL Server;对于下面的MySQL 应该可以完成这项工作

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

【讨论】:

@rahul 你认为它有什么效果吗?即使使用别名也可以正常工作。

以上是关于使用内部联接删除的主要内容,如果未能解决你的问题,请参考以下文章

使用内部联接删除 DB2

使用多个内部联接时,与使用单个内部联接时相比,我得到不同的结果

使用内部联接实现联合所有查询

使用 NamedQuery 进行内部联接?

使用具有多个条件的内部联接

MySQL 使用 MAX 日期更新内部联接