PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy kolejność tabel w złączeniu ma znaczenie, gdy używane są złączenia LEWE (zewnętrzne)?

Jest tak samo, ale jest niejednoznaczny jak diabli z ukrytym POŁĄCZENIA KRZYŻOWE. Użyj wyraźnych JOINS.

Jeśli dołączasz w klauzuli WHERE, wyniki mogą różnią się, ponieważ łączenia i filtry są pomieszane.

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)

Uwagi:

  • ŁĄCZENIA WEWNĘTRZNE i ŁĄCZENIA KRZYŻOWE są przemienne i skojarzone:kolejność zwykle nie ma znaczenia.
  • ZŁĄCZENIA ZEWNĘTRZNE nie są zidentyfikowane
  • SQL jest deklaratywny:mówisz optymalizatorowi, czego chcesz, a nie jak to zrobić. To usuwa kwestie związane z zamówieniem JOIN (z zastrzeżeniem poprzednich 2 pozycji)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak Asinh() działa w PostgreSQL

  2. Tworzenie tabeli w trybie pojedynczego użytkownika w postgres

  3. PostgreSQL Reverse LIKE

  4. PostgreSQL:Usuń bazę danych PostgreSQL za pomocą wiersza poleceń

  5. Zapytanie PostgreSQL do liczenia/grupowania według dnia i wyświetlania dni bez danych