0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SQL全外连接剖析

小明 来源:SO JSON在线解析 作者:SO JSON在线解析 2024-03-19 18:28 次阅读

SQL中的全外连接是什么?

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

图解:SQL全外连接

wKgZomX1U7mAOuBHAAAi3aQBipE037.jpg


wKgaomX1U7qAezetAACSsd8z5TA796.jpg


wKgZomX1U7uAXmZvAAByNWi__O4610.jpg


句法:

SELECT *

FROM table1

FULL OUTER JOIN table2

ON table1.column_name=table2.column_name;

语法图 - FULL OUTER JOIN

wKgaomX1U7yAU88xAABHGruz1Vg029.jpg


示例:SQL 完全外连接

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

wKgZomX1U72AWsKzAAAVbuu6Rds278.jpg


SQL代码:

SELECT * FROM table_A

FULL OUTER JOIN table_B

ON table_A.A=table_B.A;

输出:

wKgaomX1U76AXZhcAAAO90AI_W0698.jpg


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

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

wKgZomX1U7-AJJLLAAAU3_4aSCI619.jpg


示例:两个表之间的 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全外连接:

wKgaomX1U8GATMLtAAGXuH6JU_A251.jpg


以下 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 相同的结果

这是示例:

wKgZomX1U8KAIc1dAAAUMcSjkT0469.jpg


这是 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;

wKgaomX1U8OALSGGAAASLM90x-U682.jpg


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

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

版权所属:SO JSON在线解析

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    753

    浏览量

    44017
  • 代码
    +关注

    关注

    30

    文章

    4710

    浏览量

    68190
收藏 人收藏

    评论

    相关推荐

    labviEW和sql连接方法

    在用LABVIEW进行数据采集分析过程中,一般会用到数据库。在数据量很大的场合,可考虑使用SQLSERVER。下面就介绍LABVIEW与SQL SERVER的连接方法。连接思路:先在
    发表于 03-23 15:53

    labview 连接sql server

    本帖最后由 strongustb 于 2012-4-11 07:52 编辑 为什么labivew 连接 access 数据库运行的好好的labview 连接 sql server 数据库
    发表于 04-11 07:51

    labview与SQL server如何连接

    请问我想用labview连接SQL server是否有简单的例子可以共享一下呢
    发表于 05-17 13:14

    labview连接SQL server方法

    for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]用户 '(null)' 登录失败。原因: 未与信任 SQL Server
    发表于 12-15 16:45

    SQL怎么连接字符串

    大家好,我正在尝试打开与我的SQL 2008服务器的连接,并且一直在使用提供的示例,只要我已登录它们就可以工作(我有管理权限)。但是,使用我们的测试系统用户帐户,我我试图通过修改“Build SQL
    发表于 03-26 10:11

    连接oracle数据库,封装sql执行子vi

    连接oracle数据库,封装sql执行子vi。连接oracle数据库可以安装oracle客户端,或者通过odbc的方式去连接连接后,可通过
    发表于 07-03 12:07

    浅析SQL的四种连接方式

    SQL的四种连接-左连接、右连接、内连接
    发表于 03-20 11:18

    SQL能处理的自连接

    sql 基础(7)自连接
    发表于 04-08 14:19

    sql如何进行连接

    sql 基础(8)连接
    发表于 04-24 15:05

    使用LabVIEW的SQL进行连接的程序免费下载

    本文档的主要内容详细介绍的是使用LabVIEW的SQL进行连接的程序免费下载。
    发表于 09-26 08:00 11次下载
    使用LabVIEW的<b class='flag-5'>SQL</b>进行<b class='flag-5'>连接</b>的程序免费下载

    使用SQL Server连接字符串的资料总结

    以下的文章主要是介绍SQL Server连接字符串的总结,你如果是SQL Server连接字符串的疯狂一族的话,此的文章,你一定不要错过。以下就是文章的主要内容的详细描述,望大家在浏览
    发表于 10-18 11:55 3次下载

    LABVIEW与SQL SERVER的连接方法详细说明

     在用 LABVIEW 进行数据采集分析过程中,一般会用到数据库。在数据量很大的场合,可考虑使用 SQL SERVER 。下面就介绍 LABVIEW 与 SQL SERVER 的连接方法。连接
    发表于 12-24 08:00 43次下载
    LABVIEW与<b class='flag-5'>SQL</b> SERVER的<b class='flag-5'>连接</b>方法详细说明

    组态王连接SQL

    组态王连接SQL
    发表于 03-16 15:10 1次下载

    sql语句多个条件怎么连接

    SQL中,多个条件可以使用逻辑运算符连接,常用的逻辑运算符有AND、OR和NOT。这些运算符可以帮助我们在查询中指定多个条件以过滤数据,从而获得我们需要的结果集。 AND运算符用于同时满足多个条件
    的头像 发表于 11-23 11:34 2231次阅读

    sql连接的几种方式

    SQL连接是在关系型数据库中用于组合多个表的操作,以获取相互关联的数据。根据不同的连接条件,可以使用不同的连接方式来实现。 内连接(Inn
    的头像 发表于 11-23 11:37 1423次阅读