1、总论:
LEFT JOIN返回”first_table”中所有的行尽管在” second_table”中没有相匹配的数据。
RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。
INNER JOIN返回的结果集是两个表中所有相匹配的数据。
2,分解:
还是用一个例子来的痛快些。。。
declare @a table(a int,b int)
declare @b table(a int,b int)
insert @a values(1,1)
insert @a values(2,2)
insert @b values(1,1)
insert @b values(3,3)
--左:
select * from @a Aa left join @b Bb on Aa.a=Bb.a
--右:
select * from @a Aa right join @b Bb on Aa.a=Bb.a
--内
select * from @a Aa join @b Bb on Aa.a=Bb.a
--外:
select * from @a Aa full join @b Bb on Aa.a=Bb.a
--完全
select * from @a,@b
cross join 是笛卡儿乘积 就是一张表的行数乘以另一张表的行数
left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
right join 第二张表的连接列在第一张表中没有匹配是,第一张表中的值返回null
full 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和RIGHT JOIN的区别在于它们对缺失匹配项的处理方式:LEFT JOIN保持左表的完整性,而RIGHT JOIN保持右表的完整性。INNER JOIN则只保留两表中的交集部分。选择使用哪种JOIN取决于你的查询需求,即...
本文将详细介绍三种常见的连接类型:Left Join、Right Join 和 Inner Join,并通过具体的例子来帮助大家理解这些连接的具体应用。 #### 二、Left Join Left Join(也称为 Left Outer Join)是从左表(即第一个被...
总之,LEFT JOIN、RIGHT JOIN、INNER JOIN和OUTER JOIN是SQL语言中的核心部分,理解和熟练运用它们对于任何数据库开发人员都至关重要。通过不断的实践和学习,你可以更好地掌握这些JOIN类型,并在解决复杂数据查询...
* FULL OUTER JOIN:LEFT OUTER 和 RIGHT OUTER 中所有行的超集。 内连接(Inner Join) 内连接是最常见的一种连接,它也被称为普通连接,而 E.FCodd 最早称之为自然连接。例如: SELECT * FROM t_institution i ...
比较实用的方法,已经用到项目里,很好用的一个方法
inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner join inner join 又称等值连接,是指从两个表中选择公共列的记录。只有当两个表中的列值相等时,才会返回结果集。例如: ...
根据连接方式的不同,可以分为多种类型,包括内连接(Inner Join)、左连接(Left Join)以及右连接(Right Join)。本文将详细探讨这三种连接方式的区别,并通过具体的例子来解释它们的应用场景。 ### 内连接...
在本文中,我们将详细介绍SQL Left Join的使用方法、特点和区别,以及与Right Join和Inner Join的比较。 一、SQL Left Join的定义和使用 SQL Left Join也称为左外连接,它可以将左表中的所有记录与右表中的记录...
外链接操作可以分为三种:inner join、left join 和 right join。 inner join 又称等值连接,是指从两个表中返回满足条件的记录。例如: ``` SELECT * FROM ctarticle AS a INNER JOIN ctclass AS b ON a.classid =...
主要介绍了SQL之left join、right join、inner join的区别浅析,本文讲解了它们的区别并给出了实例,需要的朋友可以参考下
### Hive SQL Left Join 数据缺失问题解析 #### 一、问题背景 在大数据处理场景中,Hive 是一种广泛使用的工具,用于对存储在 Hadoop 文件系统中的数据进行数据汇总、查询和分析。随着Hive版本的不断更新,部分用户...
通过熟练掌握LEFT JOIN、RIGHT JOIN和INNER JOIN的使用,你可以更有效地从数据库中提取数据,满足各种业务需求。在实际工作中,根据实际情况灵活运用这些JOIN类型,可以帮助你编写出更高效、更具针对性的SQL查询。
总结一下,LEFT JOIN、RIGHT JOIN和INNER JOIN是数据库查询中不可或缺的部分,它们分别用于不同的数据集成需求。LEFT JOIN保证了左表所有数据的完整,RIGHT JOIN保证了右表所有数据的完整,而INNER JOIN则只返回匹配...
1. 选择正确的JOIN类型:LEFT JOIN、RIGHT JOIN和INNER JOIN各有适用场景,根据需求选择最合适的。 2. 避免全表扫描:通过索引优化,减少JOIN过程中的全表扫描。 3. 使用索引:为JOIN条件创建索引,可以大大提高JOIN...
### 数据库关联查询(Left, Right, Inner Join) 在数据库管理与操作中,关联查询是一项极为重要的技术,它能够帮助我们高效地从多个表中提取数据,并根据特定条件进行匹配和整合。本文将通过通俗易懂的方式,详细...
- 其次,由于 t2 已经与 t3 关联,所以 `t1 LEFT JOIN t2` 可以保持不变,但 t2 与 t3 的 Inner Join 结果可以与 t1 再次进行 Inner Join。 通过这样的优化,查询可以变得更加高效,减少对无效数据的处理。 3. ...
在SQL查询中,JOIN操作是用于合并两个或更多表中的数据的关键部分,它允许你在不同表之间建立联系,以便从多个源获取所需的信息。这里我们将深入探讨几种JOIN类型及其使用,以及ON和WHERE子句的区别。 1. INNER ...