sql >> Database >  >> RDS >> Sqlserver

T-SQL Verwijdert alle rijen uit een tabel wanneer de subquery onjuist is opgemaakt

Als TableAID bestaat niet in TableA , de query gebruikt de kolom uit TableB . Daarom is de vraag hetzelfde als:

delete from TableB
where id in (
  select TableB.TableAID
  from TableA
  where GUID = 'fdjkhflafdhf'
)

Dus in wezen doet het:

delete from TableB
where id in (TableAID)

Als u subquery's gebruikt, kunt u het beste uw tabelnamen vermelden bij het verwijzen. Het volgende ZAL gooi een uitzondering:

 delete from TableB
    where id in (
      select TableA.TableAID
      from TableA
      where TableA.GUID = 'fdjkhflafdhf'
    )

Verder zou ik een alias gebruiken zodat we weten naar welke query we verwijzen:

 delete from TableB
    where id in (
      select a.TableAID
      from TableA a
      where a.GUID = 'fdjkhflafdhf'
    )



  1. MySQL str_to_date probleem

  2. Oracle-tabeluitdrukking bij ophalen en bestellen

  3. Een formulier plaatsen met optionele en verplichte velden

  4. alleen variabele instellen in psql-script indien niet gespecificeerd op de opdrachtregel