如果我在MySQL查询中有多个JOIN的序列,例如
1. SELECT * FROM x
2. LEFT JOIN y ON x.id = y.id;
3. LEFT JOIN z ON x.id z.id
4. ...
是将每个单独的左联接应用于第1行中SELECT的结果,还是以将第一个左联接应用于SELECT的结果并将第二个左联接应用于先前的左联接的结果的方式处理查询?谢谢
最佳答案
JOIN
规则完全由ON
子句声明。即您的问题毫无意义-您明确声明要将表x
与y
和表x
与z
连接。如果您查询将如下所示:
SELECT * FROM x
LEFT JOIN y ON x.id = y.id
LEFT JOIN z ON y.id z.id
那么它将是
x -> y -> z
连接-看到它在ON y.id = z.id
中声明。您当前的查询代表z <- x -> y
连接。您可以看到
SQL JOIN
here的描述。