MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結(jié)果集
使用UNION和UNION ALL合并兩個或多個SELECT語句的結(jié)果集
在MySQL中, UNION
和 UNION ALL
是用于合并兩個或多個 SELECT 語句的結(jié)果集的操作符。
UNION
會去除結(jié)果集中的重復行,返回唯一的行,而 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
時,結(jié)果集的列名是由第一個 SELECT
語句中的列名決定的,因此要確保兩個 SELECT
語句中的列名和類型相匹配。
舉個實際的例子
假設有兩個表 employees1
和 employees2
包含相同的列結(jié)構和部分重復數(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;
結(jié)果如下:
+-------------+------------+-----------+ | 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;
結(jié)果如下:
+-------------+------------+-----------+ | 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
保留了所有行,包括重復的行。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mysql 8.0.16 winx64及Linux修改root用戶密碼 的方法
這篇文章主要介紹了mysql 8.0.16 winx64及Linux修改root用戶密碼 的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07MySQL將版本由5.7.37更新到5.7.39的實現(xiàn)方式
這篇文章主要介紹了MySQL將版本由5.7.37更新到5.7.39的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12一種簡單的ID生成策略: Mysql表生成全局唯一ID的實現(xiàn)
這篇文章主要介紹了一種簡單的ID生成策略: Mysql表生成全局唯一ID的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11mysql Event Scheduler: Failed to open table mysql.event
這篇文章主要介紹了mysql Event Scheduler: Failed to open table mysql.event,需要的朋友可以參考下2016-04-04MySQL中union和order by同時使用的實現(xiàn)方法
下面小編就為大家?guī)硪黄狹ySQL中union和order by同時使用的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12監(jiān)控MySQL主從狀態(tài)的shell腳本
這篇文章主要分享了監(jiān)控MySQL主從狀態(tài)的shell腳本,幫助大家更好的監(jiān)控mysql數(shù)據(jù)庫,保持穩(wěn)定性,感興趣的朋友可以了解下2020-12-12