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

SQL Delete rydder tabellen i stedet for at fejle

Det fungerer som forventet på grund af korrelationen mellem kolonne A i den indre forespørgsel til den ydre.

Dette almindeligt anvendte korrelerede forespørgselsmønster er gyldigt

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

Det fjerner TabelA-poster, der ikke har en afhængig post i TabelB.

Det viser, at du kan referere til TabelA-kolonner i en korreleret forespørgsel. I din forespørgsel

delete TableA where ColumnA in (select ColumnA from TableB)

Den indre forespørgsel producerer

  • en række for hver post i tabelB
  • en kolonne for hver række, hvis værdi er ColumnA fra ydre forespørgsel

Så SLET går igennem



  1. Hvad er der galt med denne FIRST_VALUE-forespørgsel?

  2. PostgreSQL - GROUP BY-klausul eller bruges i en aggregeret funktion

  3. Postgres INTERVAL ved hjælp af værdi fra tabel

  4. MySQL:Hvordan vælger man UTC offset og sommertid for alle tidszoner?