0
我有一個sql語句。Oracle加入的訂單
select a.*,b.*,c.*
from a
inner join b
on a.id=b.id
left join c
on b.id=c.id
,但我不konw它執行內部聯接第一。然後創建一個臨時表,如溫度。而finaly臨時離開加盟℃。內連接,左連接和右連接都具有相同的執行級別,謝謝!
我有一個sql語句。Oracle加入的訂單
select a.*,b.*,c.*
from a
inner join b
on a.id=b.id
left join c
on b.id=c.id
,但我不konw它執行內部聯接第一。然後創建一個臨時表,如溫度。而finaly臨時離開加盟℃。內連接,左連接和右連接都具有相同的執行級別,謝謝!
SQL不是程序語言。 SQL查詢描述正在生成的結果集。解釋查詢時,連接順序是從左到右。因此,在您的查詢中,結果集是由a和b上的內部聯接產生的結果集,並且該結果仍然與c結合。
您可以添加括號以避免歧義:
from (a inner join
b
on a.id = b.id
) left join
c
on b.id = c.id
但是,這是不必要的。
那就是邏輯上查詢是如何處理的。優化引擎可以選擇許多不同的執行查詢的方式,其中一些可能與這個特定的查詢有關是非常不可識別的。唯一的保證是結果集的外觀。
我明白了。非常感謝! –
爲什麼不嘗試在一些樣本數據上運行它,並查看結果是什麼? – OldProgrammer
好的。謝謝 –