2009年11月15日 星期日

SQL 查詢時的差異

好一段時間沒有發表新的內容了!

最近在撰寫程式時,越來越覺得SQL語法的重要性。

所以查詢了一下JOIN的寫法,發現 Garadin 大大所說明的內容實在很有用,

因此就把它記下來,以便日後快速查閱。詳情請點我

首先就來看一下下面兩句 SQL 語法有何差異吧!


SELECT A.*
FROM A LEFT JOIN B ON A.ID = B.ID
WHERE B.ID = 4



SELECT A.*
FROM A LEFT JOIN B ON A.ID = B.ID AND B.ID = 4


原先乍看之下,覺得兩者其實沒什麼不同!後來發現我錯了..

以第一句來說,其執行步驟是先做 LEFT JOIN 後,針對 B.ID = 4 的條件做過濾

而第二句則是針對 A 與 B 資料表做 LEFT JOIN 的同時,

當 B.ID = 4 的情況下,列出所有 A 資料表與 B.ID = 4 做 LEFT JOIN 的所有結果!

此兩者的差異可說非常大,雖然查詢的結果有可能一樣,但是其觀念差異頗大,因此特別紀錄下來.

沒有留言:

張貼留言