sql >> Database >  >> RDS >> Sqlserver

T-SQL Cross-Apply gebruiken met Delete-instructie

Ik zie geen enkel voordeel in het gebruik van cross apply hier. Hier is een eenvoudige oplossing die het werk doet:

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)

Resultaat:

recordid
101
102


  1. Hoe strftime en datetime correct te gebruiken met behulp van de Room-bibliotheek?

  2. Een overzicht van VACUUMM-verwerking in PostgreSQL

  3. Werk alle rijen in de database bij met een hash-waarde

  4. Hoe een met base64 gecodeerd img src-kenmerk in een tabel in Oracle in te voegen en vervolgens op de pagina in Oracle apex weer te geven