SQL中join操作后面的on与where的区别

join关键字的作用是将多个表按一定的条件联合起来,从而可以实现从多个表中获取数据

在join后面可以接on条件和where条件,在这里我主要就是说这两者之间的差别

建立两张简单的用来测试的表并添加数据,如下所示,一张表名为id_name,另一张表名为id_age

SQL中join操作后面的on与where的区别_第1张图片

SQL中join操作后面的on与where的区别_第2张图片

首先看看不添加条件——t2.age ='22'时的结果

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id

得到

SQL中join操作后面的on与where的区别_第3张图片

1、在这里以left join为例,首先运行where加条件——t2.age ='22'时

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id where t2.age ='22'

得到结果如下

可以得到where条件是在left join操作完成后所进行的条件筛选

2、当运行on加条件——t2.age ='22'时

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id and t2.age ='22'

得到结果如下

SQL中join操作后面的on与where的区别_第4张图片

可得到on条件是在left join之前先进行条件筛选,而后才对两个表格join操作

在这里是以left join为例,对于inner join来说由于其性质,这两种条件得到的结果会是一样,但中间内部过程还是有差异的

on比where起作用更早,,先根据on条件进行多表的连接操作,生成一个临时表再通过where来筛选

你可能感兴趣的:(数据库,SQL)