MySql UNION 運算子 (SQL UNION Operator)

UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。

UNION 就是像是 OR (聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。

UNION 與 JOIN 不同的地方在於,JOIN 是作橫向結合 (合併多個資料表的各欄位);而 UNION 則是作垂直結合 (合併多個資料表中的紀錄)。

1
2
3
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
1
2
3
4
CREATE TABLE `products_taiwan` (
P_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
P_Name VARCHAR(30) NOT NULL
);
1
2
3
4
CREATE TABLE `products_china` (
P_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
P_Name VARCHAR(30) NOT NULL
);
1
SELECT P_Name FROM `products_taiwan` UNION SELECT P_Name FROM `products_china`;
1
SELECT * FROM `products_taiwan` UNION ALL SELECT * FROM `products_china`;
1
SELECT P_Name FROM `products_taiwan` UNION ALL SELECT P_Name FROM `products_china`;