linux之SQL语句简明教程---外部连接

页面导航:首页 > 数据库 > MsSql > linux之SQL语句简明教程---外部连接

linux之SQL语句简明教程---外部连接

来源: 作者: 时间:2016-01-20 09:48 【

之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表 26684;内都有同样的 20540;,那一笔资料才会被选出。那如果我们想要列出一个表 26684;中每一笔的资料

之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN(外部连接) 的指令。

外部连接的语法是依的不同而有所不同的。举例来说,在 上,我们会在 WHERE子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。

假设我们有以下的两个表格:

Store_Information 表格

Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-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。
 

实测结果:

\

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<