Rick's DevNotes
筆記關於我作品集

© 2026 Rick's DevNotes. All rights reserved.

筆記類別
  • 全部
  • DockerDocker
  • NetworkNetwork
  • RxJSRxJS
  • NginxNginx
  • TypeScriptTypeScript
  • Data_Structure_And_AlgorithmData Structure And Algorithm
  • JavaScriptJavaScript
  • PostgreSQLPostgreSQL
  • ReactReact
  • GitGit
# SQL

建立時間:2024/08/13

PostgreSQL 筆記 - 資料合併與集合運算

接下來的範例,我會用下列這個資料表作為說明基礎:


UNION 的使用範例

目標:找出「價格最高前 4 名」以及「價格/重量比最高前 4 名」的產品

Note:這樣可能不會列出 8 筆資料,因為 UNION 會自動去除重複項目。

如果想保留所有結果(即使重複):


🧠 UNION / INTERSECT / EXCEPT 快速整理

關鍵字說明
UNION合併兩筆查詢結果,去除重複
UNION ALL合併兩筆查詢結果,不去除重複
INTERSECT只保留兩筆查詢都有的資料,會去除重複
INTERSECT ALL保留兩邊都有的資料,保留重複次數
EXCEPT只保留第一筆查詢中有、第二筆查詢中沒有的資料,去除重複
EXCEPT ALL和上面類似,但保留重複項目

EXCEPT / INTERSECT 的結果會受到查詢順序影響。


練習題:合併查詢結果

需求:

  • 找出價格小於 170 的手機品牌。
  • 再找出推出超過兩款手機的手機品牌。
  • 最後將這兩個結果合併。
namemanufacturerpriceunits_sold
N1280Nokia1991925
Iphone 4Apple3999436
Galaxy SSamsung2992359
S5620 MonteSamsung2502385
N8Nokia1507543
DroidMotorola1508395
Wave S8500Samsung1759259

解法:

參考資料

  • SQL and PostgreSQL: The Complete Developer's Guide