在 SQL Server 中使用 INNER JOIN 删除多个表中的记录
与 MySQL 不同,SQL Server 不直接支持用于删除记录的语法使用 INNER JOIN 来自多个表。不过,可以通过利用“已删除”伪表来实现解决方法。
第 1 步:初始化临时表来存储已删除的 ID
begin transaction; declare @deletedIds table ( id int );
第2步:从第一个表中删除并删除输出ID
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;
步骤 3:使用临时表从第二个表中删除
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id;
步骤 4:从其他表中删除(可选)
delete from t3 from table3 as t3 ...
第五步:提交交易
commit transaction;
注意:输出从第一个开始删除的ID删除允许您继续加入后续
替代方法:触发器
或者,您可以在第一个表上创建触发器来处理其他表中相关记录的删除。这种方法将确保隐式事务中的数据完整性。然而,它需要额外的触发器维护,并且不容易支持复杂的连接条件。
以上是如何使用 INNER JOIN 从多个 SQL Server 表中删除记录?的详细内容。更多信息请关注PHP中文网其他相关文章!