sql >> Databáze >  >> RDS >> PostgreSQL

Jaká je ekvivalentní syntaxe pro vnější použití v PostgreSQL

Jedná se o boční spojení:

SELECT table1.col1, table1.col2, Supp.ID, Supp.Supplier
FROM SIS_PRS table1 LEFT JOIN LATERAL
     (SELECT ID, SupplierName
      FROM table2
      WHERE table2.ID = table1.SupplierID
      FETCH FIRST 1 ROW ONLY
     ) Supp
     ON true;

V obou databázích se však můžete velmi přiblížit pouze pomocí korelovaného poddotazu:

SELECT table1.col1, table1.col2, table1.SupplierID, 
       (SELECT Name
        FROM table2
        WHERE table2.ID = table1.SupplierID
        FETCH FIRST 1 ROW ONLY
       ) as SupplierName
FROM SIS_PRS table1;

Všimněte si také, že v obou databázích se načte jeden řádek bez ORDER BY je podezřelé.




  1. Nejlepší a optimální způsob, jak spojit maximální hodnotu z jiné tabulky

  2. Oracle dotaz je pomalý (nebo selže) z aplikace .NET, ale je rychlý z SQL Developer

  3. Velká databáze MySQL (21MM záznamy) s daty o poloze – každé umístění má zeměpisnou šířku a délku – je třeba spustit dotaz „v blízkosti“

  4. SQLite přejmenuje PRINTF() na FORMAT()