日韩欧美人妻无码精品白浆,夜夜嗨AV免费入口,国产欧美官网在线看,高校回应聋哑女生因长相完美被质疑

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

深入理解 SQL 組合查詢:UNION、INTERSECT、EXCEPT 一網(wǎng)打盡

admin
2025年1月11日 13:19 本文熱度 1097

一、引言

在日常開發(fā)中,我們經(jīng)常需要從多個(gè)表或多個(gè)查詢中整合數(shù)據(jù)。SQL 中的組合查詢(Combination Query)提供了一種靈活且強(qiáng)大的方式,幫助我們高效地處理這些需求。本文將詳細(xì)講解 SQL 中常見的組合查詢,包括 UNION、UNION ALL、INTERSECT 和 EXCEPT,并通過實(shí)例幫助讀者掌握其使用方法。

什么是組合查詢?

組合查詢是一種將多個(gè)查詢結(jié)果集合并到一起的技術(shù)。它可以用于合并數(shù)據(jù)、過濾數(shù)據(jù)或靈活地構(gòu)建復(fù)雜查詢。

使用場(chǎng)景

  • 數(shù)據(jù)整合:將來自不同表的結(jié)果合并在一起。
  • 數(shù)據(jù)過濾:根據(jù)條件篩選交集或差集的數(shù)據(jù)。
  • 靈活查詢:簡(jiǎn)化復(fù)雜查詢邏輯,提高代碼可讀性。

二、組合查詢的基本語法

1. UNION

UNION 用于合并兩個(gè)查詢結(jié)果集,同時(shí)去除重復(fù)數(shù)據(jù)。

語法

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;

示例

-- 查詢來自兩個(gè)表的用戶姓名
SELECT name FROM users_2023
UNION
SELECT name FROM users_2024;
  • 結(jié)果:兩個(gè)表的用戶名合并后,無重復(fù)值。

2. UNION ALL

UNION ALL 與 UNION 類似,但不會(huì)去除重復(fù)數(shù)據(jù)。

語法

SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;

示例

-- 查詢兩個(gè)表的所有用戶名,包括重復(fù)值
SELECT name FROM users_2023
UNION ALL
SELECT name FROM users_2024;
  • 結(jié)果:保留重復(fù)數(shù)據(jù),性能優(yōu)于 UNION。

3. INTERSECT

INTERSECT 用于獲取兩個(gè)查詢結(jié)果集的交集。

語法

SELECT column1, column2 FROM table1
INTERSECT
SELECT column1, column2 FROM table2;

示例

-- 查詢兩個(gè)表中共同的用戶名
SELECT name FROM users_2023
INTERSECT
SELECT name FROM users_2024;
  • 結(jié)果:只包含同時(shí)存在于兩個(gè)表中的用戶名。

4. EXCEPT

EXCEPT 用于獲取第一個(gè)查詢結(jié)果集中存在但第二個(gè)結(jié)果集中不存在的數(shù)據(jù)(差集)。

語法

SELECT column1, column2 FROM table1
EXCEPT
SELECT column1, column2 FROM table2;

示例

-- 查詢存在于 users_2023 表中但不存在于 users_2024 表中的用戶名
SELECT name FROM users_2023
EXCEPT
SELECT name FROM users_2024;
  • 結(jié)果:僅包含在第一個(gè)表中存在的數(shù)據(jù)。
?

注意:INTERSECT 和 EXCEPT 并非所有數(shù)據(jù)庫都支持,使用前需檢查數(shù)據(jù)庫兼容性。


三、組合查詢的使用要點(diǎn)

1. 列數(shù)與列類型一致

組合查詢的所有子查詢必須選擇相同數(shù)量的列,且列的數(shù)據(jù)類型需要兼容。

示例

-- 錯(cuò)誤示例:列數(shù)不一致
SELECT name FROM users_2023
UNION
SELECT name, email FROM users_2024;

-- 正確示例:
SELECT name'N/A' AS email FROM users_2023
UNION
SELECT name, email FROM users_2024;

2. 排序與分頁

組合查詢結(jié)果可以通過 ORDER BY 排序,也可以使用 LIMIT 或 OFFSET 實(shí)現(xiàn)分頁。

示例

-- 合并兩個(gè)表的用戶名,并按字母排序
SELECT name FROM users_2023
UNION
SELECT name FROM users_2024
ORDER BY name ASC;

3. NULL 值的處理

組合查詢中的 NULL 值會(huì)按數(shù)據(jù)庫的默認(rèn)規(guī)則處理,需注意結(jié)果中的空值。


四、性能優(yōu)化

1. 優(yōu)先使用 UNION ALL

當(dāng)確定結(jié)果集中不需要去重時(shí),使用 UNION ALL 替代 UNION 可以提升性能。

示例

-- 性能優(yōu)化:使用 UNION ALL 避免去重開銷
SELECT name FROM users_2023
UNION ALL
SELECT name FROM users_2024;

2. 優(yōu)化子查詢

確保子查詢的條件過濾、索引使用合理,減少中間結(jié)果集的大小。

示例

-- 在子查詢中添加過濾條件
SELECT name FROM users_2023 WHERE active = 1
UNION
SELECT name FROM users_2024 WHERE active = 1;

五、實(shí)踐案例

案例一:合并用戶數(shù)據(jù)

需求

從兩張用戶表中合并所有用戶數(shù)據(jù),并去除重復(fù)。

示例代碼

SELECT user_id, name, email FROM users_2023
UNION
SELECT user_id, name, email FROM users_2024;

案例二:獲取交集數(shù)據(jù)

需求

找出兩張訂單表中共同的商品 ID。

示例代碼

SELECT product_id FROM orders_2023
INTERSECT
SELECT product_id FROM orders_2024;

案例三:計(jì)算差集

需求

找出存在于所有商品表中但未出售的商品。

示例代碼

SELECT product_id FROM products_all
EXCEPT
SELECT product_id FROM products_sold;

結(jié)語

  1. 組合查詢是 SQL 中的重要工具,能高效地整合和處理多個(gè)結(jié)果集。
  2. 熟練掌握 UNION、UNION ALL、INTERSECT 和 EXCEPT 的語法和使用場(chǎng)景,有助于構(gòu)建更靈活的查詢邏輯。
  3. 優(yōu)化性能 是實(shí)際應(yīng)用中的關(guān)鍵,可以通過減少去重操作和優(yōu)化子查詢實(shí)現(xiàn)更高效的查詢。


閱讀原文:原文鏈接


該文章在 2025/1/11 18:22:42 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved