Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy ktoś może pomóc wyjaśnić, dlaczego nieużywanie SQL JOIN jest złą praktyką i błędem?

Prawdą jest, że obie formy składni powinny dawać ten sam wynik i wewnętrznie MySQL wykonuje je obie dokładnie w ten sam sposób. Obecne wersje standardu SQL obsługują obie formy, chociaż styl przecinka jest obsługiwany tylko ze względu na kompatybilność wsteczną.

Jest przypadek, w którym użycie składni w stylu przecinka zawodzi, ale jest to egzotyczne:

SELECT * FROM A, B JOIN C ON C.x = A.y;

JOIN operator ma wyższy priorytet niż przecinek. Tak więc powyższe zapytanie próbuje ocenić C.x = A.y nie wie nawet, że A jest częścią zapytania. Więc pojawia się błąd:

ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'

Najlepszym rozwiązaniem jest użycie JOIN spójna składnia zamiast ich mieszania.

Nie możesz też tworzyć złączeń zewnętrznych za pomocą składni złączenia przecinkiem. Oracle i Sybase/Microsoft wymyśliły własną, zastrzeżoną składnię do obsługi złączeń zewnętrznych, ale żadne z nich nie są obsługiwane przez inne marki RDBMS. Obecnie wszystkie obecne wersje RDBMS, w tym Oracle i Sybase/Microsoft, obsługują standardowe JOIN składni, więc nie ma dobrego powodu, aby używać starszych rozszerzeń specyficznych dla dostawcy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL do wyszukiwania pola z ciągiem JSON

  2. Niejednoznaczna kolumna w instrukcji INNER JOIN

  3. zliczanie, ile razy skrypt jest wykonywany

  4. Łączniki i licencjonowanie MySQL

  5. Wydajny sposób na symulację pełnego sprzężenia zewnętrznego w MySQL?