程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 解析sql語句中left_join、inner_join中的on與where的差別

解析sql語句中left_join、inner_join中的on與where的差別

編輯:MySQL綜合教程

解析sql語句中left_join、inner_join中的on與where的差別。本站提示廣大學習愛好者:(解析sql語句中left_join、inner_join中的on與where的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是解析sql語句中left_join、inner_join中的on與where的差別正文


table a(id, type):
id     type
----------------------------------
1      1        
2      1         
3      2         
table b(id, class):
id    class
---------------------------------
1      1
2      2
sql語句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;
sql語句2:select a.*, b.* from a left join b on a.id = b.id where a.type = 1;
sql語句3:select a.*, b.* from a left join b on a.id = b.id and b.class = 1;

sql語句1的履行成果為:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2
3        2              

sql語句2的履行成果為:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2

sql語句3的履行成果為:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1           
3        2           
由sql語句1可見,left join 中左表的全體記載將全體被查詢顯示,on 前面的前提對它不起感化,除非再前面再加上where來停止挑選,這就是sql語句2了;由sql語句3可見,on前面的前提中,右表的限制前提將會起感化。
**************************************************************************
sql語句4:select a.*, b.* from a inner join b on a.id = b.id and a.type = 1;
sql語句5:select a.*, b.* from a inner join b on a.id = b.id where a.type = 1;
sql語句6:select a.*, b.* from a, b where a.id = b.id and a.type = 1;
sql語句7:select a.*, b.* from a, b where a.type = 1 and a.id = b.id;

這四條語句的履行成果一樣,以下:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2
因而可知,inner join 中on前面的限制前提將全體起感化,這與where的履行成果是一樣的。別的,where語句與inner join確切能獲得雷同的成果,只是效力分歧(這個我沒有測試過,不外我信任這個結論)。
然則sql語句6能否比sql語句7的效力要低一些,我沒有足夠的數據量來測試,不外我也信任是如斯的。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved