sql >> Database >  >> RDS >> Sqlserver

SQL Delete wist de tabel in plaats van fouten te maken

Dat werkt zoals verwacht, vanwege de correlatie tussen KolomA in de binnenste query naar de buitenste.

Dit veelgebruikte gecorreleerde zoekpatroon is geldig

DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)

Het verwijdert TableA-items die geen afhankelijke record hebben in TableB.

Het laat zien dat u kunt verwijzen naar TableA-kolommen in een gecorreleerde query. In uw vraag

delete TableA where ColumnA in (select ColumnA from TableB)

De innerlijke vraag produceert

  • één rij voor elke record in TableB
  • één kolom voor elke rij, waarvan de waarde ColumnA is van de buitenste query

Dus het VERWIJDEREN gaat door



  1. Inleiding tot Oracle Mobile Cloud Service

  2. Waarom het belangrijk is om gebruikerstoegang in uw database te beperken

  3. Een DDL maken voor een basislijn voor vliegroute

  4. SQL:Dynamische weergave met kolomnamen op basis van kolomwaarden in brontabel