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

T-SQL Sletter alle rækker fra en tabel, når underforespørgslen er forkert udformet

Som TableAID findes ikke i TableA , bruger forespørgslen kolonnen fra TableB . Derfor er forespørgslen den samme som:

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

Så i bund og grund gør den:

delete from TableB
where id in (TableAID)

Hvis du bruger underforespørgsler, er det bedst at nævne dine tabelnavne, når du refererer. Følgende VIL smid en undtagelse:

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

Desuden vil jeg bruge et alias, så vi ved, hvilken forespørgsel vi henviser til:

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



  1. Er der nogen listedatatype i MySQL-lagrede procedurer, eller en måde at efterligne dem?

  2. Oracle:Opdel tekstfelt på ny linje

  3. Henter outputbuffer fra DBMS_OUTPUT.GET_LINES i C#

  4. Alternativ løsning til DCount og DLookup med MS SQL Server Backend