当前位置:网站首页>inner join 与 left join 之间的区别
inner join 与 left join 之间的区别
2022-07-29 12:54:00 【_Peko_】
关于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并不以谁为基础,它只显示符合条件的记录.
边栏推荐
- JUC阻塞队列-ArrayBlockingQueue
- 图解 Attention(完整版)!
- 【微信小程序】WXSS和全局、页面配置
- 开关电源-LLC基本原理
- DBeaver 安装及配置离线驱动
- [based] GO language. Why do I have to learn Golang and introduction to the language universal
- 38.【string下章】
- JS_删除数组里的无效数据 0 undefined ‘‘ null false NaN
- Legendary version adds npc modification, adds npc method and configuration parameter tutorial
- [WeChat applet] WXSS and global, page configuration
猜你喜欢
随机推荐
pycharm专业版使用
ISME | 沈其荣团队韦中组-土壤生物障碍发生的根际微生物组诊断
详述 TCP 的 TIME_WAIT 状态要维持 2MSL 的原因
What should I do if the webpage is hijacked and redirected?Release net repair method
MySQL基础篇(四)-- 数据表的基本操作
mysql 存储过程详解
MySQL如何对SQL做prepare预处理(解决IN查询SQL预处理仅能查询出一条记录的问题)
JUC阻塞队列-ArrayBlockingQueue
MySQL八股文背诵版
【个人收藏】一些比较有用的链接
mariadbackup物理备份使用——筑梦之路
kotlin协程与线程池
Container is changed | deploy MySQL cluster in the Rancher
DVWA full level customs clearance tutorial
MySQL database installation (detailed)
Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)
The meaning of "last in first out" in stack and "first in first out" in queue
C language game ------ greedy snake ---- for Xiaobai
网页被劫持跳转怎么办?发布网修复方法
[Numpy] 创建数组








