sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL Tar bort alla rader från en tabell när underfrågan är felaktig

Som TableAID finns inte i TableA , använder frågan kolumnen från TableB . Därför är frågan densamma som:

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

Så i huvudsak gör den:

delete from TableB
where id in (TableAID)

Om du använder underfrågor är det bäst att nämna dina tabellnamn när du refererar. Följande KOMMER kasta ett undantag:

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

Dessutom skulle jag använda ett alias så att vi vet vilken fråga vi syftar på:

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



  1. Hur kan jag hitta dubbletter av konsekutiva värden i den här tabellen?

  2. Hur implementerar man Materialized View med MySQL?

  3. MySQL - Hur man räknar alla rader per tabell i en fråga

  4. Hur löser man behörighetsproblem när man kör Postgresql från minikube?