2013-03-21 38 views
0

我在想,如果這樣的:關聯在MySQL的FROM子句

select * 
from tableA natural join tableB,tableC natural join tableD; 

等同於:

select * 
from (((tableA natural join tableB),tableC),tableD) natural join tableD; 

是FROM子句左結合?

回答

1

我相信這是等同於:

select * 
from (tableA natural join TableB) cross join 
    (tableC natural join TableD) 

這是基於documentation

此前,逗號(,)和JOIN都具有相同的 優先級,所以加入表達式t1,t2 JOIN t3被解釋爲 ((t1,t2)JOIN t3)。現在,JOIN具有更高的優先級,因此表達式 被解釋爲(t1,(t2 JOIN t3))。此更改會影響使用ON子句的語句 ,因爲該子句僅可引用連接的操作數中的列 ,而優先級的更改將更改這些操作數的內容。