sql >> Databáze >  >> RDS >> Mysql

Může někdo pomoci vysvětlit, proč je nepoužívání SQL JOIN špatným postupem?

Je pravda, že obě formy syntaxe by měly dávat stejný výsledek a interně je MySQL provádí obě naprosto stejným způsobem. Současné verze standardu SQL podporují obě formy, ačkoli styl čárky je podporován pouze z důvodu zpětné kompatibility.

Existuje případ, kdy použití syntaxe ve stylu čárky selže, ale je to exotické:

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

JOIN operátor má vyšší prioritu než čárka. Výše uvedený dotaz se tedy pokouší vyhodnotit C.x = A.y ani neví, že A je součástí dotazu. Takže dostanete chybu:

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

Nejlepším řešením je použít JOIN místo jejich míchání.

Také nemůžete provádět vnější spojení pomocí syntaxe spojení čárkou. Oracle a Sybase/Microsoft vynalezly každý svou vlastní proprietární syntaxi pro zpracování vnějších spojení, ale ani jedna není podporována jinými značkami RDBMS. Dnes všechny aktuální verze RDBMS včetně Oracle a Sybase/Microsoft podporují standardní JOIN syntaxe, takže není dobrý důvod používat starší rozšíření specifická pro dodavatele.



  1. Jak zakázat všechna omezení CHECK a cizích klíčů v databázi na serveru SQL (příklady T-SQL)

  2. Jarní konference PostgreSQL 2011, USA/Kanada

  3. Nahraďte null 0 v MySQL

  4. Sdílení databáze vs dělení na oddíly