我有3个表tab1,tab2和tab3。 其中tab1的主键是tab2的外键 和 选项卡2的主键是tab3的外键
TAB1 | TAB2 | TAB3
-----------------------------
ID | ID | ID
| TAB1_ID | TAB2_ID
我想以下列方式删除标签3中的一行:
DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=TAB1.ID
OR ELSE
DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=3
有人可以提出正确的解决方法吗?
答案 0 :(得分:1)
您可以使用多表DELETE
语法:
DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=TAB1.ID
DELETE TAB3
FROM TAB3
JOIN TAB2 ON TAB2.ID = TAB3.TAB2_ID
JOIN TAB1 ON TAB1.ID = TAB2.TAB1_ID
DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=3
DELETE TAB3
FROM TAB3
JOIN TAB2 ON TAB2.ID = TAB3.TAB2_ID
WHERE TAB2.TAB1_ID = 3
但是,如果将外键配置为CASCADE
删除,那么只要父记录被删除,MySQL就会自动删除子行(也许这就是你想要的?)。
答案 1 :(得分:0)
试试这个
DELETE FROM tab3
JOIN tab2 ON tab3.tab2_id = tab2.id
JOIN tab1 ON tab2.tab1_id = tab1.id