MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結果集
使用UNION和UNION ALL合并兩個或多個SELECT語句的結果集
在MySQL中, UNION 和 UNION ALL 是用于合并兩個或多個 SELECT 語句的結果集的操作符。
UNION 會去除結果集中的重復行,返回唯一的行,而 UNION ALL 會返回所有的行,包括重復行。
舉個通用的例子
SELECT column1, column2, ... FROM table1 WHERE condition UNION SELECT column1, column2, ... FROM table2 WHERE condition;
SELECT column1, column2, ...: 指定要查詢的列。FROM table: 指定要查詢的表。WHERE condition: 指定篩選條件(可選)。
注意事項:
UNION 連接的兩個 SELECT 語句必須包含相同數(shù)量和類型的列,列的順序也必須相同。
默認情況下,UNION 會去除重復的行。如果要包含重復的行,可以使用 UNION ALL。
使用 UNION 或 UNION ALL 時,結果集的列名是由第一個 SELECT 語句中的列名決定的,因此要確保兩個 SELECT 語句中的列名和類型相匹配。
舉個實際的例子
假設有兩個表 employees1 和 employees2
包含相同的列結構和部分重復數(shù)據(jù),然后使用 UNION 和 UNION ALL 進行查詢和合并。
創(chuàng)建兩個表并插入一些數(shù)據(jù)
-- 創(chuàng)建 employees1 表
CREATE TABLE employees1 (
employee_id INT,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
-- 插入數(shù)據(jù)到 employees1 表
INSERT INTO employees1 VALUES
(1, 'John', 'Doe'),
(2, 'Jane', 'Smith'),
(3, 'Bob', 'Johnson'),
(4, 'Alice', 'Doe');
-- 創(chuàng)建 employees2 表
CREATE TABLE employees2 (
employee_id INT,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
-- 插入數(shù)據(jù)到 employees2 表,包含一些與 employees1 表重復的數(shù)據(jù)
INSERT INTO employees2 VALUES
(3, 'Bob', 'Johnson'),
(4, 'Alice', 'Doe'),
(5, 'Eva', 'Williams');
使用 UNION 合并這兩個表的數(shù)據(jù):
-- 使用 UNION 合并,去除重復行 SELECT employee_id, first_name, last_name FROM employees1 UNION SELECT employee_id, first_name, last_name FROM employees2;
結果如下:
+-------------+------------+-----------+ | employee_id | first_name | last_name | +-------------+------------+-----------+ | 1 | John | Doe | | 2 | Jane | Smith | | 3 | Bob | Johnson | | 4 | Alice | Doe | | 5 | Eva | Williams | +-------------+------------+-----------+
可以看到,UNION 自動去除了重復的行。
使用 UNION ALL 合并這兩個表的數(shù)據(jù):
-- 使用 UNION ALL 合并,包含重復行 SELECT employee_id, first_name, last_name FROM employees1 UNION ALL SELECT employee_id, first_name, last_name FROM employees2;
結果如下:
+-------------+------------+-----------+ | employee_id | first_name | last_name | +-------------+------------+-----------+ | 1 | John | Doe | | 2 | Jane | Smith | | 3 | Bob | Johnson | | 4 | Alice | Doe | | 3 | Bob | Johnson | | 4 | Alice | Doe | | 5 | Eva | Williams | +-------------+------------+-----------+
可以看到
UNION ALL保留了所有行,包括重復的行。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL mysql-connector的具體實現(xiàn)
本文主要介紹了MySQL mysql-connector的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-11-11
MySQL SUM()帶條件的求和方法與多條件的求和方法解讀
這篇文章主要介紹了MySQL SUM()帶條件的求和方法與多條件的求和方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
解決Navicat遠程連接MySQL出現(xiàn) 10060 unknow error的方法
這篇文章主要介紹了解決Navicat遠程連接MySQL出現(xiàn) 10060 unknow error的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12
教你如何恢復使用MEB備份的MySQL數(shù)據(jù)庫
這篇文章主要介紹了教你如何恢復使用MEB備份的MySQL數(shù)據(jù)庫的具體方法,需要的朋友可以參考下2016-09-09
MySQL實戰(zhàn)教程之Join語句執(zhí)行流程
這篇文章主要介紹了MySQL Join語句執(zhí)行流程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
MySQL8.0數(shù)據(jù)庫參數(shù)修改后重啟不再失效的步驟及踩坑
這篇文章主要介紹了MySQL8.0數(shù)據(jù)庫參數(shù)修改后重啟不再失效的步驟及踩坑,該功能可以讓數(shù)據(jù)庫在重啟后依然保持動態(tài)修改的參數(shù)設置,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2026-05-05

