我正在尝试做这样的事情:
DELETE FROM table_1 WHERE table_1.id IN (SELECT table_1.id FROM table_1, table_2, table_3 WHERE table_1.id = table_2.table_1_id AND table_2.id = table_3.table_2_id AND table_3.id = 5)
好像MySQL不允许我table_1在嵌套SELECT中使用。有什么建议吗?
table_1
您可能会收到此错误:
ERROR 1093 (HY000): You can't specify target table 'table_1' for update in FROM clause.
您应该能够使用MySQL的多表DELETE语法来做到这一点:
DELETE
DELETE table_1.* FROM table_1, table_2, table_3 WHERE table_1.id = table_2.table_1_id AND table_2.id = table_3.table_2_id AND table_3.id = 5
上面的查询应该可以工作,但是作为一般规则,我建议使用ANSI JOIN语法代替:
DELETE table_1.* FROM table_1 INNER JOIN table_2 on table_2.table_1_id = table_1.id INNER JOIN table_3 on table_3.table_2_id = table_2.id WHERE table_3.id = 5