sql >> Database teknologi >  >> RDS >> Mysql

Kan nogen hjælpe med at forklare, hvorfor det er dårligt og forkert at bruge en SQL JOIN?

Det er rigtigt, at begge former for syntaks skal give det samme resultat, og internt udfører MySQL dem begge på nøjagtig samme måde. Nuværende versioner af SQL-standarden understøtter begge former, selvom komma-stilen kun understøttes af hensyn til bagudkompatibilitet.

Der er et tilfælde, hvor brugen af ​​komma-stil syntaks mislykkes, men det er eksotisk:

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

JOIN operatoren har højere forrang end kommaet. Så da ovenstående forespørgsel forsøger at evaluere C.x = A.y den ved ikke engang det A er en del af forespørgslen. Så du får en fejlmeddelelse:

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

Det bedste middel er at bruge JOIN syntaks konsekvent i stedet for at blande dem.

Du kan heller ikke lave ydre joinforbindelser med komma-join-syntaksen. Oracle og Sybase/Microsoft opfandt hver deres egen proprietære syntaks til håndtering af ydre joinforbindelser, men ingen af ​​dem understøttes af andre mærker af RDBMS. I dag understøtter alle nuværende versioner af RDBMS inklusive Oracle og Sybase/Microsoft standarden JOIN syntaks, så der er ingen god grund til at bruge de ældre leverandørspecifikke udvidelser.



  1. [OPDATERET 2020-01-23] Microsoft Office 365 Build 1912 bryder ODBC-linkede tabellers identitet

  2. Hvordan henter jeg den sidste post i en MySQL-databasetabel ved hjælp af PHP?

  3. Tjek, om en streng indeholder en understreng i SQL Server 2005, ved hjælp af en lagret procedure

  4. hvordan man forbinder sql-server ved hjælp af JTDS-driver i Android