sql >> Databasteknik >  >> RDS >> PostgreSQL

Ta bort med vänster yttre koppling i Postgres

Som andra har noterat kan du inte LEFT JOIN direkt i ett DELETE-uttryck. Du kan dock ansluta dig själv på en primärnyckel till måltabellen med en USING-sats, och sedan lämna sammanfogning mot den självanslutna tabellen.

DELETE FROM tv_episodes
USING tv_episodes AS ed
LEFT OUTER JOIN data AS nd ON
   ed.file_name = nd.file_name AND 
   ed.path = nd.path
WHERE
   tv_episodes.id = ed.id AND
   ed.cd_name = 'MediaLibraryDrive' AND nd.cd_name IS NULL;

Notera självanslutningen på tv_episodes.id i WHERE-satsen. Detta undviker underfrågevägen som anges ovan.



  1. ODBC v Libpq:C-bibliotek för PostgreSQL

  2. Förhindra SQL-injektion i C

  3. SQL Agent Job - Connection kanske inte är korrekt konfigurerad eller så kanske du inte har rätt behörigheter för den här anslutningen?

  4. Skapar ENUM-variabeltyp i MySQL