2015-04-05 86 views
0

我有3個表,就像這樣:如何刪除多個表中的數據在一個查詢

release (release_id, name, ...) 

medium (medium_id, release_id, name, ...) 

track (track_id, medium_id, title, ...) 

只具有RELEASE_ID,我希望能夠同時刪除曲目,並與RELEASE_ID在相關媒體一次使用一個查詢。

可能嗎?如果是,我可以得到一個粗略的模板,我會找出其餘的。

我需要多個刪除查詢嗎?

回答

1

是的,你可以在delete語句中引用多個表中的一個語句來做到這一點:

DELETE FROM `release`, medium, track 
USING `release`, medium, track 
WHERE `release`.release_id = medium.release_id 
AND medium.medium_id = track.medium_id 
AND `release`.release_id = 1; 

Sample SQL Fiddle

如果這是應該始終發生的事情你可能想看看on delete cascade外鍵選項。查看文檔以獲取更多信息:13.1.14.2 Using FOREIGN KEY Constraints

1

在第一行定義要在加盟刪除該表

delete r, m, t 
from release r 
left join medium m on m.release_id = r.release_id 
left join track t on t.medium_id = m.medium_id 
where r.release_id = 123 
相關問題