编程、后端开发、面试的程序员、数据库、计算机软件、MySQL
MySQL
在实际开发中SQL经常写join-on-where这样的业务SQL
开发需求忙起来,有时候也错把条件放错位置
到底是在on 后面,还是where后面了
下面我们来复习总结下
口诀
先执行on,后执行where
ON是建立关联关系,where是对关联关系的筛选。
总结
先总结,后面我们上例子分析加强下理解
- 当条件放在ON后面时,无论ON条件真假,都会返回左表的数据;
- 当条件放在where后面,只有满足条件的数据才会返回。
数据准备
MYSQL版本 5.7.17-log
2张表(学生表student;成绩表score)
score成绩表的SID和学生表的SID关联
场景1:where后面条件(左连接)
这是左连接left join on
查出12条数据
场景2:on后面条件(左连接)
这是左连接left join on
这里查出来是20条数据,注意成绩是null(低于60分的也变成了null)的也查询出来
如果不加条件 b.score>60,下面数据会查询出来的
很明显,条件放where后面才是我们想要的结果
场景3:内连接on
如果改为内连接,用on条件查询出来的效果和场景1一样
查出12条数据
编程、后端开发、面试的程序员、数据库、计算机软件、MySQL