2016-11-17 100 views
-1

想問一下兩個查詢之間是否有區別?sql查詢連接表的區別

SELECT TableA., TableB., TableC.* FROM TableA 
JOIN TableB 
    ON TableA.aID= TableB.aID 
JOIN TableC 
    ON TableB.cID = TableC.cID 



SELECT TableA., TableB., TableC.* FROM TableA 
JOIN TableB 
    ON TableB.aID = TableA.aID 
JOIN TableC 
    ON TableC.cID = TableB.cID 
+0

不,沒有。 –

+0

你會猜測什麼? –

+3

兩者都返回相同的結果(「無效語法」)。 – Blorgbeard

回答

1

是否有區別?是的,您已經在on條款中顛倒了比較。

這會影響結果集或性能嗎?不。查詢的邏輯完全相同,因此結果集完全相同。

至於性能,沒有數據庫中的比較順序會影響查詢的優化。從實際的角度來看,這兩個版本應該是相同的。

+0

另外,優化器可以按照實際需要的任何順序運行查詢。您的查詢更像是提示,而不是描述計劃。考慮到這一點...關注你的連接在做什麼,而不是你可以進行查詢有多複雜。你爲什麼做這個?你不能使用括號(如數學,這很重要),使查詢更清晰?這個查詢的可操作結果是什麼?頭腦知識很好,但經驗豐富的專業人士提供價值。 –