SQL中where和on的区别

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高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值