0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SQL全外連接剖析

小明 ? 來(lái)源:SO JSON在線解析 ? 作者:SO JSON在線解析 ? 2024-03-19 18:28 ? 次閱讀

SQL中的全外連接是什么?

在SQL中,F(xiàn)ULLOUTERJOIN組合左外連接和右外連接的結(jié)果,并返回連接子句兩側(cè)表中的所有(匹配或不匹配)行。接下面sojson給大家詳細(xì)講解。

圖解:SQL全外連接

wKgZomX1U7mAOuBHAAAi3aQBipE037.jpg


wKgaomX1U7qAezetAACSsd8z5TA796.jpg


wKgZomX1U7uAXmZvAAByNWi__O4610.jpg


句法:

SELECT *

FROM table1

FULL OUTER JOIN table2

ON table1.column_name=table2.column_name;

語(yǔ)法圖 - FULL OUTER JOIN

wKgaomX1U7yAU88xAABHGruz1Vg029.jpg


示例:SQL 完全外連接

讓我們使用完全連接來(lái)組合相同的兩個(gè)表。

wKgZomX1U72AWsKzAAAVbuu6Rds278.jpg


SQL代碼:

SELECT * FROM table_A

FULL OUTER JOIN table_B

ON table_A.A=table_B.A;

輸出:

wKgaomX1U76AXZhcAAAO90AI_W0698.jpg


由于這是完全聯(lián)接,因此兩個(gè)表中的所有行(匹配和不匹配)都包含在輸出中。表table_A和表table_B之間只有一個(gè)匹配,因此只有一行輸出顯示所有列中的值。輸出的所有剩余行僅包含表 table_A 或表 table_B 中的值,其余列設(shè)置為缺失值

僅一行輸出顯示所有列中的值,解釋如下 -

wKgZomX1U7-AJJLLAAAU3_4aSCI619.jpg


示例:兩個(gè)表之間的 SQL 完全外連接

下面是兩個(gè)表之間 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結(jié)果的組合,因此,這里我們將描述FULL OUTER JOIN內(nèi)部是如何執(zhí)行的。

圖解演示SQL全外連接:

wKgaomX1U8GATMLtAAGXuH6JU_A251.jpg


以下 SQL 語(yǔ)句使用“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 訂購(gòu)全部 18 Jaffa Cakes

Salt n Shake

19 sip-n-Bite。

使用 WHERE 子句的完整外部聯(lián)接

我們可以包含一個(gè)帶有 FULL OUTER JOIN 的 WHERE 子句,以僅返回那些連接表之間不存在匹配數(shù)據(jù)的行。

以下查詢僅返回在 food 中沒(méi)有匹配食品的公司,以及與上市公司不匹配的 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 相同的結(jié)果

這是示例:

wKgZomX1U8KAIc1dAAAUMcSjkT0469.jpg


這是 SQL 語(yǔ)句:

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 的組合,并通過(guò)使用 UNION 子句進(jìn)行組合

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 語(yǔ)句的輸出是使用 Oracle 數(shù)據(jù)庫(kù) 10g Express Edition 獲取的。

希望sojson能給你的工作帶來(lái)幫助。

版權(quán)所屬:SO JSON在線解析

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

轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44032
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labviEW和sql連接方法

    在用LABVIEW進(jìn)行數(shù)據(jù)采集分析過(guò)程中,一般會(huì)用到數(shù)據(jù)庫(kù)。在數(shù)據(jù)量很大的場(chǎng)合,可考慮使用SQLSERVER。下面就介紹LABVIEW與SQL SERVER的連接方法。連接思路:先在
    發(fā)表于 03-23 15:53

    labview 連接sql server

    本帖最后由 strongustb 于 2012-4-11 07:52 編輯 為什么labivew 連接 access 數(shù)據(jù)庫(kù)運(yùn)行的好好的labview 連接 sql server 數(shù)據(jù)庫(kù)
    發(fā)表于 04-11 07:51

    labview與SQL server如何連接

    請(qǐng)問(wèn)我想用labview連接SQL server是否有簡(jiǎn)單的例子可以共享一下呢
    發(fā)表于 05-17 13:14

    labview連接SQL server方法

    for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]用戶 '(null)' 登錄失敗。原因: 未與信任 SQL Server
    發(fā)表于 12-15 16:45

    SQL怎么連接字符串

    大家好,我正在嘗試打開與我的SQL 2008服務(wù)器的連接,并且一直在使用提供的示例,只要我已登錄它們就可以工作(我有管理權(quán)限)。但是,使用我們的測(cè)試系統(tǒng)用戶帳戶,我我試圖通過(guò)修改“Build SQL
    發(fā)表于 03-26 10:11

    連接oracle數(shù)據(jù)庫(kù),封裝sql執(zhí)行子vi

    連接oracle數(shù)據(jù)庫(kù),封裝sql執(zhí)行子vi。連接oracle數(shù)據(jù)庫(kù)可以安裝oracle客戶端,或者通過(guò)odbc的方式去連接。連接后,可通過(guò)
    發(fā)表于 07-03 12:07

    淺析SQL的四種連接方式

    SQL的四種連接-左連接、右連接、內(nèi)連接、
    發(fā)表于 03-20 11:18

    SQL能處理的自連接

    sql 基礎(chǔ)(7)自連接
    發(fā)表于 04-08 14:19

    sql如何進(jìn)行連接

    sql 基礎(chǔ)(8)連接
    發(fā)表于 04-24 15:05

    使用LabVIEW的SQL進(jìn)行連接的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用LabVIEW的SQL進(jìn)行連接的程序免費(fèi)下載。
    發(fā)表于 09-26 08:00 ?11次下載
    使用LabVIEW的<b class='flag-5'>SQL</b>進(jìn)行<b class='flag-5'>連接</b>的程序免費(fèi)下載

    使用SQL Server連接字符串的資料總結(jié)

    以下的文章主要是介紹SQL Server連接字符串的總結(jié),你如果是SQL Server連接字符串的瘋狂一族的話,此的文章,你一定不要錯(cuò)過(guò)。以下就是文章的主要內(nèi)容的詳細(xì)描述,望大家在瀏覽
    發(fā)表于 10-18 11:55 ?3次下載

    LABVIEW與SQL SERVER的連接方法詳細(xì)說(shuō)明

     在用 LABVIEW 進(jìn)行數(shù)據(jù)采集分析過(guò)程中,一般會(huì)用到數(shù)據(jù)庫(kù)。在數(shù)據(jù)量很大的場(chǎng)合,可考慮使用 SQL SERVER 。下面就介紹 LABVIEW 與 SQL SERVER 的連接方法。連接
    發(fā)表于 12-24 08:00 ?43次下載
    LABVIEW與<b class='flag-5'>SQL</b> SERVER的<b class='flag-5'>連接</b>方法詳細(xì)說(shuō)明

    組態(tài)王連接SQL

    組態(tài)王連接SQL
    發(fā)表于 03-16 15:10 ?1次下載

    sql語(yǔ)句多個(gè)條件怎么連接

    SQL中,多個(gè)條件可以使用邏輯運(yùn)算符連接,常用的邏輯運(yùn)算符有AND、OR和NOT。這些運(yùn)算符可以幫助我們?cè)诓樵冎兄付ǘ鄠€(gè)條件以過(guò)濾數(shù)據(jù),從而獲得我們需要的結(jié)果集。 AND運(yùn)算符用于同時(shí)滿足多個(gè)條件
    的頭像 發(fā)表于 11-23 11:34 ?2258次閱讀

    sql連接的幾種方式

    SQL連接是在關(guān)系型數(shù)據(jù)庫(kù)中用于組合多個(gè)表的操作,以獲取相互關(guān)聯(lián)的數(shù)據(jù)。根據(jù)不同的連接條件,可以使用不同的連接方式來(lái)實(shí)現(xiàn)。 內(nèi)連接(Inn
    的頭像 發(fā)表于 11-23 11:37 ?1437次閱讀