簡體   English   中英

如何使用一個 sql 查詢從多個表中刪除一行,其中 email id 相同

[英]How to Delete a row from more than one table with one sql query where email id is same

Table1

 - name
 - phone
 - age
 - email

Table2

 - name
 - phone 
 - age
 - email

我想刪除兩個表中具有相同 email 的那些數據。

SQL 服務器不支持多表刪除,所以需要兩條delete語句(Larnu評論)。

但這仍然有點棘手,因為您需要跟蹤第一個語句刪除的電子郵件,以便您可以在第二個語句中使用它們。 我會推薦一個表變量,你可以用output子句來提供:

begin transaction;

declare @deleted_emails table (email nvarchar(100)); 
-- or whatever datatype/length you use

delete from table1
output deleted.email into @deleted_emails
where exists (select 1 from table2 t2 where t2.email = table1.email)

delete from table2
where exists (select 1 from @deleted_emails d where d.email = table2.email);

commit transaction;

將代碼包裝在transaction中使其具有原子性(即,兩個語句所做的更改一起提交或回滾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM