玩轉GaussDB 中的SET操作符
摘要:關係數據庫中提供了一個關於集合的運算符SET操作符,其中包括以下操作:UNION/UNION ALL 並集、INTERSECT 交集、MINUS 差集。
本文分享自華為雲社區《GaussDB 中的SET操作符 (UNION, INTERSECT, MINUS)【玩轉PB級數倉GaussDB(DWS)】》,作者:林欣。
SET操作符有哪些
關係數據庫中提供了一個關於集合的運算符SET操作符,其中包括以下操作:
- UNION/UNION ALL 並集
- INTERSECT 交集
- MINUS 差集
操作符講解
UNION
合併兩個查詢結果集,隱式DINSTINCT,刪除重複行(即取集合並集)
–合併兩個提取表/派生表(derived table), 返回結果為:[a,b,c,d,e]
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
UNION
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)
使用COUNT函數統計其個數,可以發現其結果總共只有5行
SELECT COUNT(1) FROM(
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
UNION
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)
)
UNION ALL
簡單合併兩個查詢結果集,不刪除重複行
將 UNION 改為 UNION ALL 可以看到,重複行也被統計進去了(結果行數由前面的5行變為8行)
SELECT COUNT(1) FROM(
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
UNION ALL
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)
)
EXCEPT / MINUS
返回出現在第一個結果集但不出現在第二個結果集中的所有行(即兩集合相減)
–返回結果為:[e]
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
EXCEPT
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)
INTERSECT
返回第一個查詢結果集和第二個查詢結果集共有的部分(即取集合交集)
–返回結果為:[a,b,c]
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
INTERSECT
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)
集合運算的使用場景
1、使用UNION代替Where子句中的OR,查詢速度更快
2、使用EXCEPT和INTERSECT, 過濾出列表中不存在/存在於數據庫中的項
「其他文章」
- 使用卷積神經網絡實現圖片去摩爾紋
- 內核不中斷前提下,Gaussdb(DWS)內存報錯排查方法
- 簡述幾種常用的排序算法
- 自動調優工具AOE,讓你的模型在昇騰平台上高效運行
- GaussDB(DWS)運維:導致SQL執行不下推的改寫方案
- 詳解目標檢測模型的評價指標及代碼實現
- CosineWarmup理論與代碼實戰
- 淺談DWS函數出參方式
- 代碼實戰帶你瞭解深度學習中的混合精度訓練
- python進階:帶你學習實時目標跟蹤
- Ascend CL兩種數據預處理的方式:AIPP和DVPP
- 詳解ResNet 網絡,如何讓網絡變得更“深”了
- 帶你掌握如何查看並讀懂昇騰平台的應用日誌
- InstructPix2Pix: 動動嘴皮子,超越PS
- 何為神經網絡卷積層?
- 在昇騰平台上對TensorFlow網絡進行性能調優
- 介紹3種ssh遠程連接的方式
- 分佈式數據庫架構路線大揭祕
- DBA必備的Mysql知識點:數據類型和運算符
- 5個高併發導致數倉資源類報錯分析