sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL Använder Cross-Apply med Delete Statement

Jag ser ingen fördel med att använda cross applicera här. Här är en enkel lösning som 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. Kan JavaScript ansluta till MySQL?

  2. PDO - Fatalt fel:Anrop till en medlemsfunktion fetch() på ett icke-objekt

  3. Djupdykning i NoSQL:En komplett lista över NoSQL-databaser

  4. hur man beräknar tiden mellan två tidsstämplar (PostgreSQL)