我试图在一个SQL中删除4个表中的行。这些表有彼此的外键。 D1表看起来像
id name age
1 mike 12
2 john 43
D2表格看起来像
id D1_id price salary
4 1 12 50
11 2 14 100
A1表看起来像
id D1_id text date
9 1 abc 12-dec
188 1 xyz 12-dec
222 1 kya 12-dec
123 2 poq 13-dec
C1表看起来像
id A1_id label date
124 9 pqr 12-dec
145 9 qwe 12-dec
121 222 fdg 13-dec
到目前为止已经尝试过的SQL
delete FROM D1,D2,A1,C1 INNER JOIN D2 on (D1.id = D2.D1_id) where name = 'mike'
所以我需要根据D1表中的名称删除行。我可以更改名称,它应该删除所有表中的所有相应行。
是否可以在删除级联上使用?http://sqlfiddle.com/#!2/d5ed78/1
答案 0 :(得分:1)
delete d1, d2, a1, c1
from d1
left join d2 on d1.id = d2.d1_id
left join a1 on d1.id = a1.d1_id
left join c1 on a1.id = c1.a1_id
where d1.name = 'mike'