SQL - UNION 運算子

你好,未來的 SQL 巔峰大師!今天,我們將踏上一段令人振奮的旅程,進入 SQL UNION 運算子的世界。別擔心如果你是編程新手——我將成為你的友好導遊,一步步解釋所有內容。所以,來一杯咖啡(或者如果你喜歡,一杯茶),讓我們一起深入探討吧!

SQL - UNION Operator

SQL UNION 運算子

想像一下,你正在計劃一個大型派對,你有一份朋友的客人名單和一份家人的客人名單。SQL UNION 運算子就像將這兩份名單合併成一個總名單,而且不會有任何重複。很棒吧?

在 SQL 的術語中,UNION 運算子允許我們合併兩個或多個 SELECT 語句的結果集。這裡是基本語法:

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

記住,為了讓 UNION 正常工作:

  1. 每個 SELECT 語句中的列數必須相同。
  2. 對應列的數據類型應該是兼容的。
  3. 每個 SELECT 語句中的列順序應該相同。

讓我們看一些例子來讓這更清晰。

在單個字段上使用 UNION

假設我們有兩個表:fruitsvegetables。我們想創建一個所有物品的列表。

SELECT name FROM fruits
UNION
SELECT name FROM vegetables;

這個查詢會給我們一個沒有重複的單一列表,包含所有的水果和蔬菜。如果兩個表中都有 'Apple',它將只在結果中出現一次。

在多個字段上使用 UNION

現在,讓我們說我們想要包含名稱和價格。我們可以這樣做:

SELECT name, price FROM fruits
UNION
SELECT name, price FROM vegetables;

這將給我們一個包含所有物品及其價格的列表。記住,兩個 SELECT 語句中的列順序和數量必須匹配。

在 UNION 中使用 WHERE 子句

我們也可以在 UNION 中使用 WHERE 子句來過濾我們的結果。例如,如果我們只想讓價格低於 $5 的物品:

SELECT name, price FROM fruits WHERE price < 5
UNION
SELECT name, price FROM vegetables WHERE price < 5;

這個查詢會給我們一個價格低於 $5 的所有水果和蔬菜的列表。

在 UNION 中使用 ORDER BY 子句

如果我們想要對我們的合併列表進行排序怎麼辦?我們可以使用 ORDER BY,但它應該在最后一个 SELECT 語句之後:

SELECT name, price FROM fruits
UNION
SELECT name, price FROM vegetables
ORDER BY name;

這將給我們一個按字母順序排序的所有水果和蔬菜的列表。

在 UNION 中使用別名

有時候,我們可能想要在輸出中為我們的列指定不同的名稱。我們可以使用別名來做到這點:

SELECT name AS item_name, price AS item_price FROM fruits
UNION
SELECT name, price FROM vegetables;

在這種情況下,'name' 列將會在結果集中顯示為 'item_name',而 'price' 則顯示為 'item_price'。

這裡是一張總結我們討論過的 UNION 方法的表格:

方法 描述
基本 UNION 合併兩個或多個 SELECT 語句的結果集
在單個字段上使用 UNION 從多個表中合併一個列
在多個字段上使用 UNION 從多個表中合併多個列
在 UNION 中使用 WHERE 在合併前過濾結果
在 UNION 中使用 ORDER BY 對合併的結果進行排序
在 UNION 中使用別名 在輸出中重命名列

記住,熟練是需要練習的!試著自己寫 UNION 查詢,嘗試不同的表和條件。在你還沒有意識到之前,你將會像專家一樣使用 UNION!

我希望這個教程能夠幫助你解開 SQL UNION 運算子的神秘。持續編程,保持好奇心,並且在過程中不忘享受樂趣。畢竟,每個偉大的程序員都是從你現在的位置開始的。快樂查詢!

Credits: Image by storyset