DELETE FROM table_a WHERE id IN(
SELECT table_a.id AS id FROM table_a, table_b
WHERE table_a.object_id = 1 AND table_a.code = 'code'
AND table_a.code = table_b.code
AND table_b.id = table_a.b_id
AND table_b.table = 'testTable')
这是我希望 MySQL 执行的一个(稍微简化的)查询。我在 stackoverflow 的其他页面上读到,这不受支持,并且可以通过使用 JOINS 来解决。如何使用 JOINS 将其“转录”为查询?我发现很难做到这一点,因为我从未尝试过使用多个表创建 DELETE 查询。
您不能从表中删除并在子查询中引用同一个表——这只是 MySQL 的限制。像下面这样的东西应该有效:
DELETE FROM table_a
USING table_a
INNER JOIN table_b
ON table_a.code = table_b.code
AND table_b.id = table_a.b_id
AND table_b.table = 'testTable'
WHERE table_a.object_id = 1
AND table_a.code = 'code'
重要的部分是USING
。如果您只是连接两个表,则会从两个表中删除记录。USING
告诉MySQL使用这些表进行处理,但只从表中删除FROM
clause.
http://dev.mysql.com/doc/refman/5.0/en/delete.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)