inner join 与 left/right join 之间的区别
作者:xlnxin发布时间:2021-05-12分类:其他教程浏览:1235
关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了。
需求是从数据库查数据,在前端以柱形图的形式展现出来,查到的数据按行业分组,显示每个行业的户数及户数占比,涉及到的字段有A表的用户数、总用户数和B表的行业名称。本来是不管查不查的到数据,在X轴都应该显示行业名称的,结果是X、Y轴都没有任何数据显示。问题就是我用错了联结方式。
sql的left join 、right join 、inner join之间的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
备注:INNER JOIN等价于 JOIN,可以理解为 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并不以谁为基础,它只显示符合条件的记录
标签:数据库
相关推荐
- 旧版本emlog5.3.1和6.0.0可以升级到pro吗?
- PHP PDO方式操作Sqlite实例
- navicat premium 15破解版64位32位 v15.0.3激活方法
- admin、0000、admin888、123456 md5加密后16位和32位代码
- ZBlog固定网站域名导致网站打不开的解决办法
- ZBlog导入数据库提示unknown character set 'utf8mb4'的原因及解决方案
- WordPress调用最近更新过的文章
- WordPress高级页面内容过滤插件:Cat-Comment-Filter
- WordPress优惠券插件:DRP Coupon
- 推荐10+必备的 WordPress 常用插件
- 其他教程排行
-
- 1抖音极速版给大家发37元过年红包啦,快来领取吧!
- 2统信uos系统默认root密码是多少
- 3admin、0000、admin888、123456 md5加密后16位和32位代码
- 4Windows10 DVDRW识别为CD驱动解决方法,windows无法读取驱动器E:\中的光盘解决方法
- 5国产安可立思辰打印机手动双面打印设置教程
- 6navicat premium 15破解版64位32位 v15.0.3激活方法
- 7快手极速版给大家发56元新年红包啦,快来领取吧!
- 8查找对话框跑出屏幕外看不见了,怎么拖回来?
- 9小程序Cannot read property 'enableUpdateWxAppCode'解决方法
- 最近发表
-
- 小程序img_sec_check图片检测出行"errcode":47001错误解决方法
- win10看图软件不见了解决方法
- 双击excel打开不显示任何内容,只能在excel里面打开文件解决方法
- 小程序saveVideoToPhotosAlbum安卓手机可以下载MP4苹果手机不能下载解决方法
- 小程序逆向错误之 typeof3 is not a function
- 几种常用接口调用方式
- 小程序e.target.dataset和e.currentTarget.dataset区别
- excel vba实现模板批量打印
- lanxum打印机手动打印双面教程图解
- https(ssl)设置301跳转将http跳转到https