2013-03-25 200 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] 

所以,如果你想删除您需要创建语句和解雇他们,我认为更多的表行。