之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。
外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。
假设我们有以下的两个表格:
Store_Information 表格
store_name |
Sales |
Date |
Los Angeles |
$1500 |
Jan-05-1999 |
San Diego |
$250 |
Jan-07-1999 |
Los Angeles |
$300 |
Jan-08-1999 |
Boston |
$700 |
Jan-08-1999 |
|
Geography 表格
region_name |
store_name |
East |
Boston |
East |
New York |
West |
Los Angeles |
West |
San Diego |
|
我们需要知道每一间店的营业额。如果我们用一个普通的连接,我们将会漏失掉 'New York'这个店,因为它并不存在于 Store_Information 这个表格。所以,在这个情况下,我们需要用外部连接来串联这两个表格:
SELECT A1.store_name, SUM(A2.Sales) SALES
FROM Georgraphy A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name
我们在这里是使用了 Oracle 的外部连接语法。
结果:
store_name |
SALES |
Boston |
$700 |
New York |
|
Los Angeles |
$1800 |
San Diego |
$250 |
请注意: 当第二个表格没有相对的资料时,SQL 会传回 NULL 值。在这一个例子中, 'New York' 并不存在于 Store_Information 表格,所以它的 "SALES" 栏位是 NULL。
分享到:
相关推荐
外连接 课程目标 1)理解 —— 外连接的两种类型; 2)掌握 ——外连接的实现方法。 外连接 在自然连接中,只有在两个表中匹配的行才能在结果集中出现。而在外连接中可以只限制一个表,而对另外一个表不加限制(所有...
SQL 左外连接,右外连接,全连接,内连接 四种连接的差异
主要讲述了使用select进行内、外连接查询的内容
sql左外连接、右外连接、内连接、全外连接的区别
SQL 左外连接,右外连接,全连接,内连接 。联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。
SQL优化--使用内连接(inner join)代替外连接(left join,right join)
对MSSQL中的内连接和外连接所得出的数据集不是很清楚的童鞋可以参考参考
通用的分页存储过程,内置的函数、内连接、左外连接; 通用的分页存储过程,内置的函数、内连接、左外连接; 通用的分页存储过程,内置的函数、内连接、左外连接
word文件,深入讲解Oracle的外连接查询
数据库练习四(内连接外连接)答案.doc
SQL基本SELECT查询语句_内外连接
左外连接右外连接,内连接区别,oracle的开发中很需要的,大家看看吧
通过TCP协议连接百度,雅虎服务器获取的网页,分析页面内容,取得百度收录量 和外连接数量!非源码,有需要源码的联系我!
关于内连接,外连接(左右连接)等的总结关于内连接,外连接(左右连接)等的总结关于内连接,外连接(左右连接)等的总结
数据库高级查询-连接查询,oracle为例
SQL左外连接,右外连接,全连接,内连接四种连接的差异[参照].pdf
内连接,外连接,分组和排序,全文搜索,插入语句。
外连接,内连接, left join, right join, full join, cross join 有图有真相
SQL 内连接,外连接:假设一堆男女在教堂,有夫妇有单身的,假设男为左表,女为右表......
内连接与外连接的精简写法,可用于sql和hql中,即使hql中两实体不存在实际上的主外键关系,也适用。