UNION 聯(lián)合查詢
前面介紹了如何使用 WHERE 給查詢加上條件約束,本小節(jié)介紹如何使用 UNION 聯(lián)合查詢。實際業(yè)務(wù)中,有時候需要把滿足多種獨立條件的結(jié)果集整合到一起,就可以使用 UNOIN 聯(lián)合查詢,本小節(jié)介紹 UNION 和 UNION ALL 的用法和區(qū)別。
1.UNION ALL聯(lián)合查詢
同樣為了演示方便,先向 teacher 表插入多條測試數(shù)據(jù):
INSERT INTO teacher
(name,age,id_number,email)
VALUES
('姓名一',17,'42011720200604077X',NULL),
('姓名二',18,'42011720200604099X','123@qq.com'),
('姓名三',19,'42011720200604020X',NULL),
('姓名四',20,'42011720200604022X','345@qq.com'),
('姓名五',21,'42011720200604033X',NULL),
('姓名六',22,'42011720200604077X',NULL),
('姓名七',23,'42011720200604099X','123@qq.com'),
('姓名八',24,'42011720200604020X',NULL),
('姓名九',25,'42011720200604022X','345@qq.com'),
('姓名十',26,'42011720200604033X',NULL),
('姓名1',27,'42011720200604077X',NULL),
('姓名2',28,'42011720200604099X','123@qq.com'),
('姓名3',29,'42011720200604020X',NULL),
('姓名4',30,'42011720200604022X','345@qq.com'),
('姓名5',31,'42011720200604033X',NULL),
('姓名6',32,'42011720200604077X',NULL),
('姓名7',33,'42011720200604099X','123@qq.com'),
('姓名8',32,'42011720200604020X',NULL),
('姓名9',31,'42011720200604022X','345@qq.com'),
('姓名0',30,'42011720200604033X',NULL)
執(zhí)行結(jié)果如下圖:

現(xiàn)在使用 UNION ALL 把滿足兩種查詢條件的結(jié)果集并到一起:
SELECT * FROM teacher WHERE age > 20
UNION ALL
SELECT * FROM teacher WHERE age > 25;
執(zhí)行結(jié)果如下圖:

Tips:如上圖所示,
UNION ALL將兩種查詢結(jié)果并到一起,仔細觀察可以發(fā)現(xiàn)結(jié)果集中有重復(fù)的數(shù)據(jù),所以使用UNION ALL聯(lián)合查詢的結(jié)果集沒有去掉重復(fù)的數(shù)據(jù)。
2.UNION 聯(lián)合查詢
現(xiàn)在使用 UNION 把上面兩種結(jié)果集并到一起:
SELECT * FROM teacher WHERE age > 20
UNION
SELECT * FROM teacher WHERE age > 25;
執(zhí)行結(jié)果如下圖:

Tips:如上圖所示,
UNION將兩種查詢結(jié)果并到一起,可以看到結(jié)果集中已經(jīng)去掉重復(fù)的數(shù)據(jù),需要根據(jù)具體業(yè)務(wù)選擇使用UNION還是UNION ALL。
3.小結(jié)
本小節(jié)介紹了如何使用 UNION 和 UNION ALL 聯(lián)合查詢需要結(jié)果集,需要注意的是要根據(jù)具體業(yè)務(wù)選擇使用 UNION 還是 UNION ALL 其中 UNION 聯(lián)合查詢已經(jīng)去除了重復(fù)的結(jié)果集 UNION ALL 聯(lián)合查詢沒有去除重復(fù)結(jié)果集,但是 UNION ALL查詢性能要比 UNION好一些。
愛因詩賢 ·
2025 imooc.com All Rights Reserved |