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

だからあなたはMSSQL構文を探していますか?これが機能するように何かがあります:

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 に答える