从一个sql中的4个表中删除行

时间:2014-12-19 15:25:56

标签: mysql

我试图在一个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

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'