inner join 与 left join 、right 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 、right join之间的区别相关推荐
- oracle join详解,inner join和left join之间的区别详解
前言 关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了. 需求是从数据库查数据,在 ...
- inner join 与 left 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 ...
- mysql join 与 cross join 效率_浅析Mysql Join语法以及性能优化
在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧,这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则 ...
- mysql+join的原理,Mysql连接join查询原理知识点
Mysql连接join查询原理知识点 Mysql连接(join)查询 1.基本概念 将两个表的每一行,以"两两横向对接"的方式,所得到的所有行的结果. 假设: 表A有n1行,m1列 ...
- Hive中的map join、left semi join和sort merge bucket join
map join map join是将join双方比较小的表直接分发到各个 map进程的内存中,在map进程中进行join操作,这样就不用进行reduce步骤,从而提高了速度. 如果不指定mapjoi ...
- 1.19.5.4.流上的Join、常规Join、时间区间Join、时态表Join、基于处理时间的时态Join、时态表函数Join、用法
1.19.5.4.流上的Join 1.19.5.4.1.常规Join 1.19.5.4.2.时间区间Join 1.19.5.4.3.时态表Join 1.19.5.4.4.基于处理时间的时态Join 1 ...
- mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...
最新文章
- java集合 stack_Java集合之Stack
- Netflix 工程师的生活 —— 40毫秒的案例
- github上开箱即用的app之TODO app
- Java虚拟机10:类加载器
- MySQL增量备份及恢复
- 海龟交易法则01_玩风险的交易者
- redis(版本redis-5.0.2)的安装步骤
- 铝板展开插件_铝板行业排料Rhino插件
- VMware 14 版本激活许可证
- js检查名字手机号是否规范,js去除空格
- matlab中uigetfile读取图片,MATLAB如何读取图片? 如何用Matlab读入并
- win10c盘扩容_Win10磁盘分区工具-无损分区助手
- mysql语法 join on 表示什么
- Odoo相关资源(持续更新中)
- maven-基本命令,打包包名问题
- sql2005java驱动_sqljdbc.jar 2005
- linux ip命令
- Linux学习笔记(十八) -- 运行程序,出现Failed to load module canberra-gtk-module错误的解决方案
- resolveSize()的使用
- 可以学计算机辅修金融吗,本科计算机申请美国研究生,转金融工程,需要辅修什么专业?...
热门文章
- Therenbsp;isnbsp;nonbsp;resul…
- Mac上最佳的SVN管理工具:Cornerstone
- ——————————
- java 多队列_java多线程实现简单队列
- mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
- pycache怎么用_如何用python3输出dos命令?
- 用Linux同时编辑两个文档,如何使用Vim编辑多个文件
- restful api例子php,如何通过PHP访问RESTful API
- 客运售票员_「我做一天春运人」体验通村客车售票员兼安全员 温馨慢车上我背着太阳奔跑...
- PC电脑端社交应用设计灵感