我想使用单个查询从4个表中删除数据。
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 :(得分:2)
所以你在寻找MS SQL语法? 这样的事情有效:
DELETE table
FROM table a
INNER JOIN table_b b on b.id = a.id
WHERE [my filter condition]
因此,如果你想要删除更多的表行,你需要创建更多的语句并解雇它们。我想。
答案 1 :(得分:2)
您无法在SQL Server中使用单个查询删除多个表数据。 最好的概念是在相对表中给出FK并使用 ON DELETE CASCADE 或使用单个查询从多个表中删除。