SQL全外连接剖析

JSON 2024-03-15 16:18:22 421

SQL中的全外连接是什么?

在SQL中,FULLOUTERJOIN组合左外连接和右外连接的结果,并返回连接子句两侧表中的所有(匹配或不匹配)行。接下面sojson给大家详细讲解。

图解:SQL全外连接




句法:

SELECT * 
FROM table1 
FULL OUTER JOIN table2 
ON table1.column_name=table2.column_name;

语法图 - FULL OUTER JOIN


示例:SQL 完全外连接

让我们使用完全连接来组合相同的两个表。


SQL代码:

SELECT * FROM table_A 
FULL OUTER JOIN table_B 
ON table_A.A=table_B.A;

输出:


由于这是完全联接,因此两个表中的所有行(匹配和不匹配)都包含在输出中。表table_A和表table_B之间只有一个匹配,因此只有一行输出显示所有列中的值。输出的所有剩余行仅包含表 table_A 或表 table_B 中的值,其余列设置为缺失值

仅一行输出显示所有列中的值,解释如下 -


示例:两个表之间的 SQL 完全外连接

下面是两个表之间 SQL 中的完全外连接的示例。

示例表:食品

+---------+--------------+-----------+------------+
| ITEM_ID | ITEM_NAME    | ITEM_UNIT | COMPANY_ID |
+---------+--------------+-----------+------------+
| 1       | Chex Mix     | Pcs       | 16         |
| 6       | Cheez-It     | Pcs       | 15         |
| 2       | BN Biscuit   | Pcs       | 15         |
| 3       | Mighty Munch | Pcs       | 17         |
| 4       | Pot Rice     | Pcs       | 15         |
| 5       | Jaffa Cakes  | Pcs       | 18         |
| 7       | Salt n Shake | Pcs       |            |
+---------+--------------+-----------+------------+

示例表:公司

+------------+---------------+--------------+
| COMPANY_ID | COMPANY_NAME  | COMPANY_CITY |
+------------+---------------+--------------+
| 18         | Order All     | Boston       |
| 15         | Jack Hill Ltd | London       |
| 16         | Akas Foods    | Delhi        |
| 17         | Foodies.      | London       |
| 19         | sip-n-Bite.   | New York     |
+------------+---------------+--------------+

我们知道FULL OUTER JOIN是LEFT OUTER JOIN和RIGHT OUTER JOIN结果的组合,因此,这里我们将描述FULL OUTER JOIN内部是如何执行的。

图解演示SQL全外连接:


以下 SQL 语句使用“FULL OUTER JOIN”子句返回“foods”表和“company”表中的所有行。

SQL代码:

SELECT a.company_id AS "a.ComID",
a.company_name AS "C_Name",
b.company_id AS "b.ComID", 
b.item_name AS "I_Name" 
FROM   company a 
FULL OUTER JOIN foods b 
ON a.company_id = b.company_id;

输出:

a.ComID C_Name b.ComID I_Name 
---------- ------------------------- ---------- --- ------------- 
16 Akas Foods 16 Chex Mix 
15 Jack Hill Ltd 15 Cheez-It 
15 Jack Hill Ltd 15 BN Biscuit 
17 Foodies。17 Mighty Munch 
15 Jack Hill Ltd 15 Pot Rice 
18 订购全部 18 Jaffa Cakes 
                                                Salt n Shake 
19 sip-n-Bite。							

使用 WHERE 子句的完整外部联接

我们可以包含一个带有 FULL OUTER JOIN 的 WHERE 子句,以仅返回那些连接表之间不存在匹配数据的行。

以下查询仅返回在 food 中没有匹配食品的公司,以及与上市公司不匹配的 food 中的食品。

SELECT a.company_id AS "a.ComID", 
a.company_name AS "C_Name",
b.company_id AS "b.ComID", 
b.item_name AS "I_Name" 
FROM   company a
FULL OUTER JOIN foods b
ON a.company_id = b.company_id
WHERE a.company_id IS NULL 
OR b.company_id IS NULL 
ORDER BY company_name;

输出:

a.ComID    C_Name                    b.ComID    I_Name
---------- ------------------------- ---------- ---------------
19         sip-n-Bite.
                                                Salt n Shake

使用 Union 子句的完全外连接

UNION 子句可用作替代,以获得与 FULL OUTER JOIN 相同的结果

这是示例:


这是 SQL 语句:

SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
FULL OUTER JOIN table_B 
ON table_A.a=table_b.A 
ORDER BY table_A.A;

使用LEFT和RIGHT OUTER JOIN以及UNION 子句的FULL OUTER JOIN

下面的代码是,LEFT OUTER JOIN 和 RIGHT OUTER JOIN 的组合,并通过使用 UNION 子句进行组合

SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
LEFT OUTER JOIN table_B 
ON table_A.a=table_b.A 
UNION 
SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
RIGHT OUTER JOIN table_B 
ON table_A.a=table_b.A;


注意:此处显示的所述 SQL 语句的输出是使用 Oracle 数据库 10g Express Edition 获取的。

希望sojson能给你的工作带来帮助。

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/510.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:
SQL

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
SQL自然连接剖析
SQL自然连接剖析
SQL非等值连接剖析
SQL非等值连接剖析
SQL交叉连接剖析
SQL交叉连接剖析
SQL等链接剖析
SQL等链接剖析
PHP变量剖析
Python元组剖析
最新文章
Linux I/O重定向 1767
Ruby 循环 - while、for、until、break、redo 和 retry 711
Node.js:全局对象 517
如何使用终端检查Linux上的内存使用情况 635
JavaScript对象详细剖析 300
Python print() 函数 409
PHP if/else/elseif 语句 407
HTML5 Canvas弧线教程 387
Java赋值运算符 431
XML内部实体和外部实体 464
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 686836
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675081
免费天气API,天气JSON API,不限次数获取十五天的天气预报 615785
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 611117
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 555623
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510028
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481399
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 269208
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244787
Elasticsearch教程(一),全程直播(小白级别) 227489
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...