一条SELECT查询语句,返回一个结果集。不同SELECT语句查询出的结果集之间可以完成一些集合操作。
比如:合并、排除、交集等。
UNION/UNION ALL合并结果集
语法如下:
select 子句1 union [all] select 子句2
union:合并结果集的同时,删除重复记录;
union all:合并结果集,不删除重复记录;
使用多个UNION/UNION ALL关键字,可以一次性合并多个结果集。
示例:
查询年龄在10岁以下或15岁以上的学生:
select * from school.student where age < 10 union select * from school.student where age > 15; 或 select * from school.student where age < 10 union all select * from school.student where age > 15;
查询年龄在10岁以下及性别为男的学生(去除重复数据):
select * from school.student where age < 10 union select * from school.student where gender = '男';
查询年龄在10岁以下及性别为男的学生(保留重复数据):
select * from school.student where age < 10 union all select * from school.student where gender = '男';
查询年龄在10岁以下或性别为男或姓王的学生(不保留重复数据):
select * from school.student where age < 10 union select * from school.student where gender = '男' union select * from school.student where student_name like '王%';
EXCEPT排除结果集
语法如下:
select 子句1 except select 子句2
except:返回在SELECT子句1里,但不在SELECT子句2里的记录;
示例:
查询年龄在10岁以下但不姓王的学生:
select * from school.student where age < 10 except select * from school.student where student_name like '王%';
INTERSECT取结果集的交集
语法如下:
select 子句1 intersect select 子句2
intersect:返回既在SELECT子句1里,又在SELECT子句2里的记录;
示例:
查询年龄在10岁以下且姓王的学生:
select * from school.student where age < 10 intersect select * from school.student where student_name like '王%';
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。