2013-03-25 220 views
0

我想使用單個查詢從4個表中刪除數據。使用Inner Join刪除行

delete e1,e2,e3,e4 FROM sas.RolesInMenuOperations as e1 INNER JOIN 
sas.RolesMenus as e2 ON e1.RoleMenuId = e2.Id INNER JOIN 
sas.RolesInModules as e3 ON e2.RolesInModulesId = e3.Id INNER JOIN 
sas.Roles as e4 ON e3.RoleId = e4.Id 
where e4.Id=5 

這就是我迄今爲止所做的。我在引用this鏈接 是否可以使用連接從4個表中刪除數據。 如何實現這個或我想寫4個不同的查詢?

雖然此查詢工作正常

delete e1 FROM sas.RolesInMenuOperations as e1 INNER JOIN 
sas.RolesMenus as e2 ON e1.RoleMenuId = e2.Id INNER JOIN 
sas.RolesInModules as e3 ON e2.RolesInModulesId = e3.Id INNER JOIN 
sas.Roles as e4 ON e3.RoleId = e4.Id 
where Roles.Id=5 
+0

這將在'MySQL'上工作,但不在'SQL Server'上。 – 2013-03-25 07:21:20

+0

這是否有其他解決方法? – 2013-03-25 07:22:03

+0

@JW:從SQL Server中的多個表中刪除將需要多個查詢,對吧? – Rachcha 2013-03-25 07:25:55

回答

2

無法使用SQL Server中的單個查詢刪除多個表數據。 最好的概念是給予FK相對錶並使用ON DELETE CASCADE或使用單個查詢從多個表中刪除。

+0

是的,先生!給予好評! – 2015-07-03 22:12:47

2

所以,你正在尋找MS SQL語法? 東西liek這個工程:

DELETE table 
FROM table a 
INNER JOIN table_b b on b.id = a.id 
WHERE [my filter condition] 

所以,如果你想刪除您需要創建語句和解僱他們,我認爲更多的錶行。