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

Záleží na pořadí tabulek ve spojení, když se používají LEVÉ (vnější) spojení?

Je to stejné, ale je to nejednoznačné s implicitním KŘÍŽOVÉ SPOJE. Použijte explicitní JOINS.

Pokud se připojujete k klauzuli WHERE, výsledky mohou se liší, protože spojení a filtry jsou smíšené.

SELECT ....
  FROM apples a
       JOIN
       bananas b ON ...
       JOIN 
       oranges o ON ...
       LEFT JOIN
       kiwis k ON k.orange_id = o.id
 WHERE (filters only)

Poznámky:

  • INNER JOINS a CROSS JOINS jsou komutativní a asociativní:na pořadí obvykle nezáleží.
  • OUTER JOINS nejsou, což jste identifikovali
  • SQL je deklarativní:říkáte optimalizátoru, co chcete, ne jak to udělat. Tím se odstraní úvahy o objednávce JOIN (s výhradou předchozích 2 položek)


  1. Jak pozastavit provádění příkazu v PostgreSQL

  2. Instalace PostgreSQL na Ubuntu pro Ruby on Rails

  3. Standardní číselné formátovací řetězce Podporované FORMAT() v SQL Server

  4. Vyberte posledních N řádků z MySQL