Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

T-SQL sử dụng áp dụng chéo với câu lệnh xóa

Tôi không thấy bất kỳ khuyến khích nào trong việc sử dụng áp dụng chéo ở đây. Đây là một giải pháp đơn giản thực hiện công việc:

declare @t table(recordid int)
declare @tableone table(recordid int)
declare @tabletwo table(recordid int)
declare @tablethree table(recordid int)
insert @t values(101),(102),(103),(104),(105),(106)

insert @tableone values(101),(102),(103),(104)
insert @tablethree values(101),(102)

delete t
from @t t
where not exists (select 1 from @tableone where t.recordid = recordid)
and exists (select 1 from @tableone)
or not exists (select 1 from @tabletwo where t.recordid = recordid)
and exists (select 1 from @tabletwo)
or not exists (select 1 from @tablethree where t.recordid = recordid)
and exists (select 1 from @tablethree)

Kết quả:

recordid
101
102


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi giá trị Numeric thành Varchar

  2. Chèn và chuyển đổi dữ liệu từ bảng SQL

  3. máy chủ sql:xóa tất cả các hàng của tất cả các bảng

  4. SQL Server 2008, mệnh đề WHERE khác nhau với một truy vấn

  5. Bảng PIVOT cho dữ liệu tài khoản với các cột cho mỗi tháng