where是從查詢的結果中篩選符合的記錄,on是在查詢時進行過濾,使查詢的結果只有符合條件的記錄。
定義乙個學生表stu(id,name,scoreid)和乙個成績表score(id,value),假設需要查詢name為張三的學生的成績。
select
*from stu inner
join score on stu.scoreid=score.id and stu.name=
'張三'
;select
*from stu inner
join score on stu.scoreid=score.id where stu.name=
'張三'
;
來看一下兩個查詢語句的區別,為了方便理解,此處假設查詢過程中有乙個臨時表來存放查詢出來的資料。第一條語句表示在獲取資料到臨時表的時候過濾掉所有不符合條件的資料,只獲取到張三的成績資料到臨時表,然後顯示出來。第二條語句則是先獲取到所有人的成績資料到臨時表,然後通過where條件從臨時表裡篩選出張三的記錄顯示出來。區別在於on條件是只獲取到指定資料,但是where條件是先獲取到所有資料再去篩選,所以on的效率要比where高。 SQL中ON和WHERE的區別
一直覺得自己sql不熟練,於是開始刷sql題,發現了不懂sql中on和where的區別,搜尋結果網上幾十幾十篇的部落格互相抄 關鍵抄得還很迷惑。好在最後還是弄懂了。1.首先on是用在連線join中的,它的意思是在生成連線結果的時候 偏心地 剔除掉一些不符合條件的 至於怎麼偏心,比如在left joi...
sql中on和where的區別
資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。2 where條件是在臨時表生成好後,再對臨時表...
SQL中on和where的區別
這篇部落格參考了網上的,具體哪一篇是原稿,不知道,特此宣告。資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。下面以使用left jion時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回...