国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

解析sql語句中l(wèi)eft_join、inner_join中的on與where的區(qū)別

2024-07-24 13:03:09
字體:
供稿:網(wǎng)友
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的執(zhí)行結(jié)果為:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2
3        2              

sql語句2的執(zhí)行結(jié)果為:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2

sql語句3的執(zhí)行結(jié)果為:
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;

這四條語句的執(zhí)行結(jié)果一樣,如下:
a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2
由此可見,inner join 中on后面的限制條件將全部起作用,這與where的執(zhí)行結(jié)果是一樣的。另外,where語句與inner join確實能得到相同的結(jié)果,只是效率不同(這個我沒有測試過,不過我相信這個結(jié)論)。
但是sql語句6是否比sql語句7的效率要低一些,我沒有足夠的數(shù)據(jù)量來測試,不過我也相信是如此的。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 交口县| 嘉善县| 休宁县| 蕉岭县| 禹城市| 平安县| 合阳县| 平湖市| 武冈市| 榕江县| 马关县| 同仁县| 墨玉县| 宣武区| 云安县| 汕尾市| 凤山县| 东乡| 依兰县| 环江| 中方县| 阿尔山市| 开远市| 屏东县| 上思县| 海原县| 龙口市| 田东县| 凤山县| 方城县| 上林县| 汨罗市| 厦门市| 泸溪县| 巴林左旗| 和林格尔县| 建阳市| 东莞市| 广灵县| 平度市| 湘西|