sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Delete rensar tabellen istället för att göra fel

Det fungerar som förväntat, på grund av korrelationen mellan kolumnA i den inre frågan till den yttre.

Detta ofta använda korrelerade frågemönster är giltigt

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

Den tar bort tabellA-poster som inte har en beroende post i tabellB.

Det visar att du kan referera till TableA-kolumner i en korrelerad fråga. I din fråga

delete TableA where ColumnA in (select ColumnA from TableB)

Den inre frågan producerar

  • en rad för varje post i TabellB
  • en kolumn för varje rad, vars värde är KolumnA från yttre fråga

Så DELETE går igenom



  1. Hur man tilldelar räknaren baserat på ett villkor

  2. Använder du Oracle-sekvens för att infoga logg-id i två tabeller från jdbc?

  3. Något sätt att undvika en filsortering när order by skiljer sig från where-klausulen?

  4. Varför find_in_set fungerar men IN-klausul