最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

解析sql语句中left_join、inner_join中的on与where的区别_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 18:54:00
文档

解析sql语句中left_join、inner_join中的on与where的区别_MySQL

解析sql语句中left_join、inner_join中的on与where的区别_MySQL:bitsCN.com table a(id, type):id type ----------------------------------1 1 2 1 3 2 table b(id, class):id class ---------------------------------1 12 2sql语句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;sql语句2:select a.*,
推荐度:
导读解析sql语句中left_join、inner_join中的on与where的区别_MySQL:bitsCN.com table a(id, type):id type ----------------------------------1 1 2 1 3 2 table b(id, class):id class ---------------------------------1 12 2sql语句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;sql语句2:select a.*,

bitsCN.com 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的效率要低一些,我没有足够的数据量来测试,不过我也相信是如此的。
bitsCN.com

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

解析sql语句中left_join、inner_join中的on与where的区别_MySQL

解析sql语句中left_join、inner_join中的on与where的区别_MySQL:bitsCN.com table a(id, type):id type ----------------------------------1 1 2 1 3 2 table b(id, class):id class ---------------------------------1 12 2sql语句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;sql语句2:select a.*,
推荐度:
标签: sql on left
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top