Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann jemand erklären, warum die Verwendung eines SQL JOINs keine schlechte Praxis und falsch ist?

Es ist wahr, dass beide Formen der Syntax dasselbe Ergebnis liefern sollten, und MySQL führt sie intern auf genau die gleiche Weise aus. Aktuelle Versionen des SQL-Standards unterstützen beide Formen, obwohl der Komma-Stil nur aus Gründen der Abwärtskompatibilität unterstützt wird.

Es gibt einen Fall, in dem die Verwendung der Komma-Syntax fehlschlägt, aber es ist exotisch:

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

Der JOIN Der Operator hat Vorrang vor dem Komma. So wie die obige Abfrage versucht, C.x = A.y auszuwerten es kennt nicht einmal diesen A ist Teil der Abfrage. Sie erhalten also einen Fehler:

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

Abhilfe schafft hier am besten der JOIN Syntax konsistent, anstatt sie zu mischen.

Außerdem können Sie keine äußeren Verknüpfungen mit der Komma-Join-Syntax erstellen. Oracle und Sybase/Microsoft haben jeweils ihre eigene proprietäre Syntax für die Handhabung von Outer Joins erfunden, aber beide werden nicht von anderen RDBMS-Marken unterstützt. Heute unterstützen alle aktuellen Versionen von RDBMS, einschließlich Oracle und Sybase/Microsoft, den Standard JOIN Syntax, daher gibt es keinen guten Grund, die älteren herstellerspezifischen Erweiterungen zu verwenden.