MySQL JOIN-Abfragen ohne ON-Bedingungen
Frage: Können MySQL JOIN-Abfragen ohne eine ON-Anweisung geschrieben werden, und Wie unterscheiden sie sich von LINKS und RECHTS? JOINs?
Antwort:
Ja, MySQL erlaubt das Schreiben von JOIN-Abfragen ohne eine ON-Bedingung. Dieses Verhalten weicht von den ANSI-SQL-Standards und den meisten anderen Datenbanken ab. Solche Abfragen entsprechen jedoch einem Cross-Join, der ein kartesisches Produkt erstellt, anstatt Zeilen basierend auf gemeinsamen Bedingungen zu verbinden.
Wenn in MySQL eine ON-Klausel in einem JOIN oder INNER JOIN fehlt, ist der Effekt a Kreuzverbindung. Ebenso kann eine ON-Klausel mit einem CROSS JOIN verwendet werden, um die Join-Bedingungen weiter zu verfeinern.
Unterschiede zu LEFT- und RIGHT-JOINs:
LEFT- und RIGHT-JOINs erfordern eine ON-Klausel zur Angabe der Join-Bedingungen. Dies liegt daran, dass ihr Zweck darin besteht, Zeilen aus der linken oder rechten Tabelle einzubeziehen, auch wenn in der anderen Tabelle keine übereinstimmenden Zeilen vorhanden sind. Ohne eine ON-Klausel würden sie einfach die Zeilen der linken und rechten Tabelle jeweils separat zurückgeben.
Praktische Überlegungen:
Obwohl es technisch möglich ist, JOIN zu verwenden Bei Abfragen ohne ON-Bedingungen in MySQL ist es aus Gründen der Übersichtlichkeit generell ratsam, CROSS JOIN explizit zu verwenden. Die folgende Syntax wird bevorzugt:
from A cross join B
über:
from A, B
oder:
from A join B -- with no on clause
Das obige ist der detaillierte Inhalt vonKönnen MySQL-JOIN-Abfragen ohne eine ON-Klausel funktionieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!