回覆列表
-
1 # 使用者350001603304
-
2 # 藍風24
on and 是指這前後兩個表連線的條件 不止一個條件,兩個表會按所有條件進行前後連線,這on和and左右出現的是列與列的關係。他是A和B全部資料按要求的連線。
on where 是指這前後兩個表的連線條件只有on後面的一個,然後對連線好的結果,去執行where條件查詢,where後面的列可以不是連線相關的列,where後面出現的是某一個列的條件,是對行的篩選條件,不是列與列的連線關係。where是對A或B篩選之後的資料再去按照ON的條件去連線
比如select * from employee A join Salary B on A.name=B.name and A.ID=B.ID
select * from employee A join Salary B on A.name=B.name where A.ID="111"
你感受下
原先一直對SQL左右連線中的on and和on where的區別不是太瞭解,直到在網上看到了下面這段話才豁然開朗。 在使用left join時,on and和on where條件的區別如下:
1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉,on後的條件用來生成左右表關聯的臨時表,where後的條件對臨時表中的記錄進行過濾。