select查询结果是一个包含一或多条数据的结果集,类似数学里的集合,可进行
交(intersect)、并(union)、差(minus)运算。
被操作的结果集需满足:
- 两结果集所含数据列的数量相等。
- 两结果集所含数据列的类型必须一一对应。
# 集合运算-练习
# 必须保证作集合运算的两个结果集的列数、数据类型一一对应
#
# 1、union并运算
# 重复的数据只保留一个
SELECT
id,
java # 查询结果显示的名字是java
FROM grades
UNION
SELECT
id, math
FROM student;
# 2、minus差运算(MySQL不支持)
# 从集合A中减去集合AB共有的。
# 语法格式:select 语句 minus select 语句【不支持】,但可借助子查询notin实现minus运算
SELECT
id, math
FROM student
WHERE
(id, math)NOT IN(SELECT id, math FROM grades);
# 3、interset交运算(MySQL不支持)
# 语法格式:select 语句 interset select 语句【不支持】,但可借助多表连接查询实现interset交运算
SELECT
#即使是查交集,由于是多表查询,也【必须】指定同名字段的表名
s.id, s.math
FROM
student s
JOIN grades g ON(s.id = g.id AND s.math = g.math)
WHERE
s.id >=1; # g.id 效果一样