0

我想使用单个查询从 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

这是我到目前为止所做的。我正在引用链接是否可以使用联接从 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
4

2 回答 2

2

所以您正在寻找 MS SQL 语法?有点像这行得通:

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

所以如果你想删除更多的表行,我认为你需要创建更多的语句并触发它们。

于 2013-03-25T07:26:43.850 回答
2

您不能在 SQL Server 中使用单个查询删除多个表数据。最好的概念是在相关表中提供 FK 并使用ON DELETE CASCADE或使用单个查询从多个表中删除。

于 2013-03-25T07:53:15.047 回答