inner join 与 left join 之间的区别
关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了。
需求是从数据库查数据,在前端以柱形图的形式展现出来,查到的数据按行业分组,显示每个行业的户数及户数占比,涉及到的字段有A表的用户数、总用户数和B表的行业名称。本来是不管查不查的到数据,在X轴都应该显示行业名称的,结果是X、Y轴都没有任何数据显示。问题就是我用错了联结方式。
一、sql的left join 、right join 、inner join之间的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
举例如下:
--------------------------------------------
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
--------------------------------------------
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
inner join 与 left join 之间的区别相关推荐
- oracle join详解,inner join和left join之间的区别详解
前言 关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了. 需求是从数据库查数据,在 ...
- inner join 与 left join 、right join之间的区别
关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了. 需求是从数据库查数据,在前端以 ...
- left join,right join,inner join,full join之间的区别
sql中的连接查询有inner join(内连接).left join(左连接).right join(右连接).full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果 ...
- SQL中inner join、left join、right join、outer join之间的区别
SQL中inner join.left join.right join.outer join之间的区别 举个例子你就能知道了! A表(a1,b1,c1) B表(a2,b2) a1 b1 ...
- SQL-连接查询:left join,right join,inner join,full join之间的区别
参考: https://www.cnblogs.com/lijingran/p/9001302.html https://www.cnblogs.com/assasion/p/7768931.html ...
- Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- 图解SQL inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角 ...
- 转载:left join right join left outer join 区别
原文地址:https://blog.csdn.net/laolaowhn/article/details/1776219 通俗的讲: A left join B 的连接的记录数 ...
最新文章
- 电脑计算机无法关闭什么意思,笔记本电脑无法关闭是什么问题? (长按以关闭计算机以解决问题)...
- CentOS 6.5 下安装 Redis 2.8.7
- linux只提取前两个目录名,Linux技巧:介绍从目录路径获取文件名和目录前缀的方法...
- Java中System.setProperty()用法
- linux c账户安全性,linux c flash安全策略
- 百度php editor图片上传到其他盘,百度编辑器Editor图片独立上传
- CF896E Welcome home, Chtholly(分块/并查集/第二分块)
- C语言中变量名加括号,为什么在声明变量时C ++允许我们在括号内将变量名括起来?...
- C++,Java,Pathy这几种编程语言的区别
- python 实现代码雨(转载)
- Linux获取管理员权限的相关命令
- 5分钟商学院学习笔记
- 文件共享锁溢出 请增加MaxLocksperFile注册表项值
- nodex 解决跨哉请求的解决方案express
- linux deepin配置优化:解决deepin v20.5不能自动降频导致CPU风扇一直狂转吹热气的问题
- 如何对excel某一列的数据进行分列
- 庖丁解牛——深入解析委托和事件
- hdu 1859 最小长方形
- Android实战—Broadcast音乐盒(三)
- PDF文件有编辑权限,怎么编辑PDF文件?
热门文章
- C++语言引用的介绍和示例
- VMware ESXi/ESX 的内部版本号和版本 (2143832)-2020-10-27更新
- 一步步实现SDDC-嵌入式PSC的VC部署
- Java基础学习总结(91)——阿里巴巴Java开发手册公开版
- Git学习总结(8)——Git和SVN之间的基本区别
- 一维搜索斐波那契C语言,斐波那契数列在一维搜索中的应用
- 反射 数据类型_这是一份超全面详细的Java反射机制学习指南
- 腾讯云AI平台张文杰:构建一站式机器学习服务平台
- 那些激动人心的React,Webpack,Babel的新特性对于我们开发体验带来哪些提升
- 基于event 实现的线程安全的优先队列(python实现)