gpt4 book ai didi

sql - 如何在 SQL Server 中使用 INNER JOIN 从多个表中删除

转载 作者:行者123 更新时间:2023-12-01 16:51:47 24 4
gpt4 key购买 nike

在 MySQL 中你可以使用语法

DELETE t1,t2 
FROM table1 AS t1
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...

如何在 SQL Server 中执行相同的操作?

最佳答案

您可以利用此示例中的“已删除”伪表。像这样的东西:

begin transaction;

declare @deletedIds table ( id int );

delete from t1
output deleted.id into @deletedIds
from table1 as t1
inner join table2 as t2
on t2.id = t1.id
inner join table3 as t3
on t3.id = t2.id;

delete from t2
from table2 as t2
inner join @deletedIds as d
on d.id = t2.id;

delete from t3
from table3 as t3 ...

commit transaction;

显然,您可以执行“输出已删除”操作。如果您需要加入第三个表的某些内容,也可以在第二次删除时进行。

顺便说一句,您还可以在插入语句上执行inserted.*,并在更新语句上执行inserted.* 和deleted.*。

编辑:另外,您是否考虑过在 table1 上添加触发器以从 table2 + 3 中删除?您将处于隐式事务中,并且还将具有可用的“inserted.”和“deleted.”伪表。

关于sql - 如何在 SQL Server 中使用 INNER JOIN 从多个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com