mysql - 使用从同一表中选择内部联接进行删除

标签 mysql subquery inner-join

我正在尝试从表 A 中删除,其中 ID 存在于包含表 A 的选择内部联接中,类似于:

Delete from TableA where ID in 
(Select Distinct A.ID from TableA A
Inner Join TableC C
Inner Join TableJ J
Inner Join Table J J2
On J.VendorID=J2.VendordID
and J.Title=J2.Title
and A.C_ID=C.C_ID
and J.ID=A.J_ID
and J2.ID=C.J_ID)

选择工作如我所愿(令人惊讶),但我不断收到错误

1093 - 您无法在 FROM 子句中指定要更新的目标表“TableA”

我认为这意味着您无法尝试从子查询中包含的表中删除。有没有办法重组这个以便我可以?

最佳答案

您不需要使用子查询。

Delete A from TableA A
Inner Join TableC C
Inner Join TableJ J
Inner Join TableJ J2
On J.VendorID = J2.VendordID
and J.Title = J2.Title
and A.C_ID = C.C_ID
and J.ID = A.J_ID
and J2.ID = C.J_ID

关于mysql - 使用从同一表中选择内部联接进行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48290844/

相关文章:

mysql 使用 INNER JOIN 选择多个表?

php - utf8表中插入奇怪的字符

mysql - 查询返回一条 "extra"记录。关于如何从查询结果中删除它的任何建议?

MySQL 错误,我已尽我所能

mysql - 连接与子查询

mysql - 如何在mysql中使用同一个表中两列的结果

mysql - UPDATE with INNER JOIN 失败,但相关的 SELECT 语句有效

mysql - 使用 where 子句更新 2 个表的内部连接

php - while 循环内的 foreach 返回重复数据

mysql - 获取每月摘要