left join 和join(请教JOIN LEFT JOIN ALL JOIN 等的区别和联系)

本文目录
- 请教JOIN LEFT JOIN ALL JOIN 等的区别和联系
- SQL: join 和left join的区别,join就是inner join的缩写,是吗
- left join和right join的区别是什么
- left join 与join都会形成笛卡尔积
请教JOIN LEFT JOIN ALL 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并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
注:
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "《", "》", "《=", "》=" 或 "《》"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.
SQL: join 和left join的区别,join就是inner join的缩写,是吗
join 默认就是 inner join
left join 和 right join 是以其中一个表为基础,
inner join 就不会了
left join和right join的区别是什么
left join和right join的区别为:基表不同、操作不同、结果不同。
一、基表不同
1、left join:left join以左数据表为基表。
2、right join:right join以右数据表为基表。
二、操作不同
1、left join:left join会把左表中的全部信息输出,然后搜索右表中符合条件的记录。
2、right join:right join会把右表中的全部信息输出,然后左搜索表中符合条件的记录。
三、结果不同
1、left join:left join查出来的结果是左边的所有数据和与左边有交集部分的数据。
2、right join:right join查出来的结果是右边的所有数据和与右边有交集部分的数据。
left join 与join都会形成笛卡尔积
注释:即使两个表join,一个里面的都是唯一的,一个是包含重复的值的话依然会造成笛卡尔积
hive》 desc tmp.0703testxhh;
OK
name string
diqu string
Time taken: 0.123 seconds, Fetched: 2 row(s)
hive》 select * from tmp.0703testxhh;
OK
zs bj
zs sh
zs sh
zs sh
ls hn
ww sh
Time taken: 0.151 seconds, Fetched: 6 row(s)
hive》 select *
》 from(
》 select
》 name,
》 diqu
》 from tmp.0703testxhh
》 )A left join(
》 select
》 name,
》 diqu
》 from tmp.0703testxhh
》 )B on A.name=B.name;
OK
zs sh zs bj
zs sh zs sh
zs sh zs sh
zs sh zs sh
ls hn ls hn
ww sh ww sh
zs bj zs bj
zs bj zs sh
zs bj zs sh
zs bj zs sh
zs sh zs bj
zs sh zs sh
zs sh zs sh
zs sh zs sh
zs sh zs bj
zs sh zs sh
zs sh zs sh
zs sh zs sh
Time taken: 25.986 seconds, Fetched: 18 row(s)
hive》 select *
》 from(
》 select
》 name,
》 diqu
》 from tmp.0703testxhh
》 )A join(
》 select
》 name,
》 diqu
》 from tmp.0703testxhh
》 )B on A.name=B.name;
OK
zs bj zs sh
zs sh zs sh
zs sh zs sh
zs sh zs sh
ls hn ls hn
ww sh ww sh
zs bj zs bj
zs sh zs bj
zs sh zs bj
zs sh zs bj
zs bj zs sh
zs sh zs sh
zs sh zs sh
zs sh zs sh
zs bj zs sh
zs sh zs sh
zs sh zs sh
zs sh zs sh
Time taken: 24.778 seconds, Fetched: 18 row(s)
hive》

更多文章:
apache不能在本地计算机启动(关于“Windows不能在本地计算机启动Apache2.并参考特定服务错误代码1“问题解决)
2026年1月4日 19:00
deepin开机的四个选项(win10和deepin双系统怎样设置启动项)
2026年3月2日 15:45
deficiency词源(minus的详细意思minus的详细意思是什么)
2026年9月23日 15:30
mysql workbench怎么运行sql文件(如何使用MySQL Workbench导入.sql文件)
2025年5月23日 03:00
webpack缺点(如何理解webpack文档中对AMD缺点的描述)
2026年9月10日 12:30
discuz采集插件(火车头采集的数据怎么发布在discuz网站)
2025年11月7日 09:30
accommodation theory名词解释(带sion后缀的单词~~快快快!)
2026年7月27日 18:15
htmlcssjs软件下载手机(前端div+css怎么放到手机里面查看效果)
2026年2月9日 05:00
centos7怎么安装yum(CentOS7 配置 yum 源和 epel 源)
2025年11月6日 00:30
面向对象程序设计是java吗(Java是一种面向对象的编程语言吗)
2025年7月24日 13:45
linux配置与管理web服务器(高分请教如何搭建Linux下的web服务器)
2025年12月1日 02:00
vfp中的常用函数(求Visual Foxpro常用数值函数)
2026年4月7日 23:15
淘宝智能版导航代码(求淘宝店铺导航条代码,半透明状态的如下图)
2026年1月29日 13:00
shady是什么意思(Eminem为什么又叫slim shady,什么意思)
2025年9月24日 14:15







