首頁 >資料庫 >mysql教程 >如何使用 INNER JOIN 從多個 SQL Server 表中刪除資料列?

如何使用 INNER JOIN 從多個 SQL Server 表中刪除資料列?

DDD
DDD原創
2025-01-07 06:09:41395瀏覽

How to Delete Rows from Multiple SQL Server Tables Using INNER JOIN?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn