2017-03-08 18 views

答えて

4

,クエリを記述するより良い方法は、明示的なCROSS JOINである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 ; 

書かれているように、クエリは意味がありません。値が存在しない場合は、行が返されません

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

:がtrueで、一度表示されると仮定すると、これは同等です。

+0

も一種の参加ここにあり999' – Caleth

+0

が_what t3.id == ON 'INNER JOINをtables3さt3を使用してもらえますか? t1とt3の間?私はカンマが何であるかを意味していますか?_ –

+0

コンマは非難されました。クロス結合を意味します。 – 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

これは元のクエリとは異なる結果を示しています。説明はありません – Caleth

+0

@Caleth異なる結果セットを与える方法を教えてください –

+0

t3.idはtable1とtable2のidのいずれとも関係がありません – Caleth