2017-03-08 2 views

Antwort

4

A , in der FROM Klausel ist eine veraltete Abkürzung für CROSS JOIN

Eine bessere Möglichkeit, die Abfrage zu schreiben, ist mit einer expliziten CROSS JOIN:

SELECT t1.* 
FROM table1 t1 INNER JOIN 
    table2 t2 
    ON t1.user_id = t2.id CROSS JOIN 
    tables3 t3 
WHERE t3.id = 999 ; 

Wie geschrieben, die Abfrage macht keinen Sinn. Unter der Annahme, dass wahr und einmal vorkommt, dann ist dies gleichbedeutend mit:

SELECT t1.* 
FROM table1 t1 INNER JOIN 
    table2 t2 
    ON t1.user_id = t2.id; 

Wenn der Wert nicht vorhanden ist, dann werden keine Zeilen zurückgegeben werden.

+0

könnte auch ein 'INNER JOIN Tabelle S3 T3 t3.id == 999' – Caleth

+0

_What Art verwenden Join ist hier da? zwischen t1 und t3 ?. Ich meine, worum geht es bei dem Komma? _ –

+0

Das Komma ist veraltet Syntax bedeutet Cross Join – Caleth

-1
SELECT t1.* 
FROM table1 t1 
JOIN table2 t2 ON t1.user_id = t2.id 
JOIN tables3 t3 ON t2.id=t3.id 
WHERE t3.id = 999 
+0

Dies gibt verschiedene Ergebnisse der ursprünglichen Abfrage und hat keine Erklärung – Caleth

+0

@Caleth können Sie mir erklären, wie es unterschiedliche Ergebnismenge –

+0

t3.id hat keine Beziehung mit einem der IDs in Tabelle1 und Tabelle2 – Caleth

Verwandte Themen