sql >> Database teknologi >  >> RDS >> Sqlserver

T-SQL Brug af Cross-Apply med Slet-erklæring

Jeg kan ikke se nogen fordel ved at bruge cross-anvendelse her. Her er en simpel løsning, der gør jobbet:

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)

Resultat:

recordid
101
102


  1. JDBC:fremmednøgle på PK oprettet i samme transaktion

  2. Hvordan tæller man ord i MySQL / regular expression replacer?

  3. Indlæser CSV-filer i MySQL Workbench

  4. 1052:Kolonne 'id' i feltlisten er tvetydig