在SQL Server 中使用INNER JOIN 從多個表中刪除
與MySQL 不同,SQL Server 不直接支援使用INNER JOIN 從多個表中刪除內連接。但是,您可以透過以下解決方法達到相同的效果:
第1 步:使用“已刪除”偽表
建立一個名為“@deletedIds”的臨時表存儲第一個表中已刪除行的ID:
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;
步驟2:從後續表中刪除
使用「@deletedIds」表格從後續表中刪除:
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id; delete from t3 from table3 as t3 ...
第3步:提交事務
提交交易以進行更改permanent:
commit transaction;
注意:如果需要連接第三個表,您可以從第二個刪除語句中輸出deleted.id 。
替代方法:觸發器
考慮在table1上使用自動從table2和table3中刪除的觸發器當從 table1 中刪除一行。這可確保引用完整性並消除手動刪除的需求。
以上是如何使用 INNER JOIN 從多個 SQL Server 表中刪除資料列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!