join on 与inner join 有啥不同呢 ?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了join on 与inner join 有啥不同呢 ?相关的知识,希望对你有一定的参考价值。
谢谢了~~!!!!!!!
没什么不同,都一样只是一种省略的写法就把inner去掉了
不过好像在access中 inner必须要写,否则报错
这个inner就好像as一样,可有可无,如果不写,就默认为是普通连接 参考技术A 一样的。省略写法
参考资料:www.it118.org
sql中 INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN 中 ON与Where的区别
对于sql中 INNER JOIN 、LEFT JOIN、 RIGHT JOIN 、、FULL JOIN中 ON与Where的区别简单说明一下
关键字描述
LEFT JOIN : 左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
RIGHT JOIN : 右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
INNER JOIN: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
FULL JOIN: 外连接,返回两个表中的行:LEFT JOIN + RIGHT JOIN
LEFT JOIN 、RIGHT JOIN 中 ON 和 Where条件的区别
NO条件是在生成临时表时使用的条件,不管ON中的条件是否为真,都会返回左边表中的所以记录。
Where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有LEFT JOIN的含义了(已经返回左边表的记录),条件不为真的就全部过滤掉。
表1
id | age |
---|---|
1 | 15 |
2 | 16 |
3 | 17 |
4 | 18 |
表2
mame | age |
---|---|
张三 | 15 |
李四 | 16 |
王五 | 15 |
ON
select * FROM tab1 left join tab2 on tab1.age = tab2.age
id | age | name | age(1) |
---|---|---|---|
1 | 15 | 张三 | 15 |
1 | 15 | 王五 | 15 |
2 | 16 | ||
3 | 17 | ||
4 | 18 |
select * FROM tab1 left join tab2 on tab1.age = tab2.age and tab2.name='张三'
id | age | name | age(1) |
---|---|---|---|
1 | 15 | 张三 | 15 |
2 | 16 | ||
3 | 17 | ||
4 | 18 |
从结果上两条sql看到on中的条件不管是否为真,都会返回左边表中的所有记录。
where
select * FROM tab1 left join tab2 on (tab1.age = tab2.age) where tab2.name ='张三'
id | age | name | age(1) |
---|---|---|---|
1 | 15 | 张三 | 15 |
从结果上看到Where条件将NO条件的临时表进行过滤,条件不为真的就全部过滤掉。
总结
- 通过这么语句执行结果来看LEFT JOIN、 RIGHT JOIN的特殊性 不管on上的条件是否为真都会返回left 或 right 表中的所有记录。
- INNER JOIN没有这个特殊性,条件放在on中或where中,返回的结果集是相同的。
- FULL JOIN 则将LEFT JOIN、 RIGHT JOIN的特性的并集。
以上是关于join on 与inner join 有啥不同呢 ?的主要内容,如果未能解决你的问题,请参考以下文章
sql中left join、right join、inner join有啥区别
inner join on, left join on, right join on的区别与介绍
sql中 INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN 中 ON与Where的区别
sql中 INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN 中 ON与Where的区别