SQL 外部连接的用法
2009-12-27 22:40
162 查看
之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。
外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。
假设我们有以下的两个表格:
我们需要知道每一间店的营业额。如果我们用一个普通的连接,我们将会漏失掉 '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 的外部连接语法。
结果:
请注意: 当第二个表格没有相对的资料时,SQL 会传回 NULL 值。在这一个例子中, 'New York' 并不存在于 Store_Information 表格,所以它的 "SALES" 栏位是 NULL。
外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。
假设我们有以下的两个表格:
Store_Information 表格
| |||||||||||||||
Geography 表格
|
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 外部连接的用法
- Excel Service 使用外部数据之一——基于SQL身份验证嵌入数据连接
- SQL中的left outer join,inner join,right outer join用法 (左右内连接)
- sql内连接与外连接的用法
- SQL 外部连接和内部链接(练习)
- linux之SQL语句简明教程---外部连接
- SqlDataAdapter适配器的用法(ADO.NET无连接模式访问数据库)
- SQL循序渐进(23)UNION 和 外部连接
- SQL的各种连接(cross join、inner join、full join)的用法理解
- SQL语句左连接用法
- ORACLE-SQL积累(查询外检约束、记录长度、字段长度、启用禁用触发器、case用法、分组连接函数、查询被锁表)
- Oracle PL-SQL中 左连接和右连接用法
- SQL连接,类型,建表,用法收集
- SQL 中的左外连接和+号的用法
- SQL中字符串截取、连接、替换等函数的用法
- PSSQL DEVELOPER连接外部数据库(oracle to oracle)
- SQL的各种连接(cross join、inner join、full join)的用法理解
- sql中case when 的用法,字符串拼接,以及连接其他服务器数据库。
- Oracle PL-SQL中 左连接和右连接用法
- SQL语句中不同的连接JOIN及join的用法