17、UNION 联合查询

实际业务中,有时候需要把满足多种独立条件的结果集整合到一起,就可以使用 UNOIN 联合查询

UNION ALL联合查询

先向 teacher 表插入多条测试数据:

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);

现在使用 UNION ALL 把满足两种查询条件的结果集并到一起:

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

UNION ALL 将两种查询结果并到一起,仔细观察可以发现结果集中有重复的数据,所以使用 UNION ALL 联合查询的结果集没有去掉重复的数据。

UNION 联合查询

现在使用 UNION 把上面两种结果集并到一起:

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

UNION 将两种查询结果并到一起,可以看到结果集中已经去掉重复的数据,需要根据具体业务选择使用 UNION 还是 UNION ALL。

参考资料:http://www.imooc.com/wiki/mysqllesson/mysqlunion.html

posted @ 2022-07-04 21:02  tiansz  阅读(43)  评论(0编辑  收藏  举报