sql语句中连接查询的例子

发布时间:2020-12-17编辑:脚本学堂
分享一些sql连接查询语句的例子,包括内连接、左外连接、右外连接、全连接、交叉连接等查询实例,需要的朋友参考下。

sql连接查询:
1)、内连接 inner join
 

复制代码 代码示例:
与where相同 select * from @a Aa join @b Bb on Aa.a=Bb.a

2)、左外连接 left join
返回左边表所有符合条件的记录

复制代码 代码示例:
select * from @a Aa left join @b Bb on Aa.a=Bb.a

3)、右外连接 right join
返回右边表所有符合条件的记录

复制代码 代码示例:
select * from @a Aa right join @b Bb on Aa.a=Bb.a

4)、全连接  full join
左向外连接和右向外连接的合集

复制代码 代码示例:
select * from @a Aa full join @b Bb on Aa.a=Bb.a

5)、交叉连接 cross join
也称笛卡儿积。返回左表中的每一行与右表中所有行的组合

仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。(www.jb200.com 脚本学堂)

将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。
Microsoft SQL Server 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字:
 

left outer join 或 left join
right outer join 或 right join
full outer join 或 full join

一,使用左向外联接
假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。

若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用 SQL-92 左向外联接。下面是 Transact-SQL 左向外联接的查询:
 

复制代码 代码示例:
use pubs
select a.au_fname, a.au_lname, p.pub_name 
from authors a left outer join publishers p
   on a.city = p.city
 order by p.pub_name asc, a.au_lname asc, a.au_fname asc

不管是否与 publishers 表中的 city 列匹配,LEFT OUTER JOIN 均会在结果中包含 authors 表的所有行。注意:结果中所列的大多数作者都没有相匹配的数据,因此,这些行的 pub_name 列包含空值。

二,使用右向外联接
假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。SQL-92 右向外联接运算符 RIGHT OUTER JOIN 指明:不管第一个表中是否有匹配的数据,结果将包含第二个表中的所有行。

若要在结果中包括所有的出版商,而不管城市中是否还有出版商居住,请使用 SQL-92 右向外联接。下面是 Transact-SQL 右向外联接的查询:
 

复制代码 代码示例:
use pubs
select a.au_fname, a.au_lname, p.pub_name
    from authors as a right outer join publishers as p
 on a.city = p.city
 order by p.pub_name asc, a.au_lname asc, a.au_fname asc