1. 程式人生 > Mysql入門教學 >22 UNION 聯合查詢

22 UNION 聯合查詢

前面介紹瞭如何使用 WHERE 給查詢加上條件約束,本小節介紹如何使用 UNION 聯合查詢。實際業務中,有時候需要把滿足多種獨立條件的結果集整合到一起,就可以使用 UNOIN 聯合查詢,本小節介紹 UNIONUNION ALL 的用法和區別。

1.UNION ALL聯合查詢

同樣為了演示方便,先向 teacher 表插入多條測試資料:

INSERT INTO teacher
(name,age,id_number,email)
VALUES
('姓名一',17,'42011720200604077X',NULL),
('姓名二',18,'42011720200604099X','[email protected]'),
(
'姓名三',19,'42011720200604020X',NULL), ('姓名四',20,'42011720200604022X','[email protected]'), ('姓名五',21,'42011720200604033X',NULL), ('姓名六',22,'42011720200604077X',NULL), ('姓名七',23,'42011720200604099X','[email protected]'), ('姓名八',24,'42011720200604020X',NULL), ('姓名九',25,'42011720200604022X','[email protected]'), ('姓名十',26,'42011720200604033X',NULL), ('姓名1',27,'42011720200604077X'
,NULL), ('姓名2',28,'42011720200604099X','[email protected]'), ('姓名3',29,'42011720200604020X',NULL), ('姓名4',30,'42011720200604022X','[email protected]'), ('姓名5',31,'42011720200604033X',NULL), ('姓名6',32,'42011720200604077X',NULL), ('姓名7',33,'42011720200604099X','[email protected]'), ('姓名8',32,'42011720200604020X',NULL), ('姓名9',31,'42011720200604022X','[email protected]'), ('姓名0',30
,'42011720200604033X',NULL)

執行結果如下圖:

圖片描述

現在使用 UNION ALL 把滿足兩種查詢條件的結果集併到一起:

SELECT * FROM teacher WHERE age > 20
UNION ALL
SELECT * FROM teacher WHERE age > 25;

執行結果如下圖:

圖片描述

Tips:如上圖所示,UNION ALL 將兩種查詢結果併到一起,仔細觀察可以發現結果集中有重複的資料,所以使用 UNION ALL 聯合查詢的結果集沒有去掉重複的資料。

2.UNION 聯合查詢

現在使用 UNION 把上面兩種結果集併到一起:

SELECT * FROM teacher WHERE age > 20
UNION
SELECT * FROM teacher WHERE age > 25;

執行結果如下圖:

圖片描述

Tips:如上圖所示,UNION 將兩種查詢結果併到一起,可以看到結果集中已經去掉重複的資料,需要根據具體業務選擇使用 UNION 還是 UNION ALL

3.小結

本小節介紹瞭如何使用 UNIONUNION ALL 聯合查詢需要結果集,需要注意的是要根據具體業務選擇使用 UNION 還是 UNION ALL 其中 UNION 聯合查詢已經去除了重複的結果集 UNION ALL 聯合查詢沒有去除重複結果集,但是 UNION ALL查詢效能要比 UNION好一些。