#Oracle
数据准备
DROP TABLE T_TEST;
CREATE TABLE T_TEST (id NUMBER(10) VISIBLE NOT NULL ,姓名 VARCHAR2(50 BYTE) VISIBLE ,性别 VARCHAR2(50 BYTE) VISIBLE ,班级 VARCHAR2(50 BYTE) VISIBLE ,成绩 NUMBER(5,2) VISIBLE
);INSERT INTO T_TEST VALUES ('1', '张三', '男', '1班', '100');
INSERT INTO T_TEST VALUES ('2', '李四', '男', '1班', '89');
INSERT INTO T_TEST VALUES ('3', '王五', '男', '1班', '70');
INSERT INTO T_TEST VALUES ('4', '浩宇', '男', '2班', '99');
INSERT INTO T_TEST VALUES ('5', '祥康', '男', '2班', '66');
INSERT INTO T_TEST VALUES ('6', '刘丽', '女', '2班', '88');
INSERT INTO T_TEST VALUES ('7', '张三', '男', '3班', '59');
INSERT INTO T_TEST VALUES ('8', '张三', '男', '4班', '78');
INSERT INTO T_TEST VALUES ('9', '金华', '男', '1班', '70');
INSERT INTO T_TEST VALUES ('10', '金华', '男', '1班', '60');
INTERSECT
可以对两个或多个结果集进行连接,形成“交集”。
返回左边结果集和右边结果集中都有的记录,且结果不重复(这也是集合的主要特性)。
交集限制条件
子结果集要具有相同的结构。
子结果集的列要必须相同
子结果集对应的数据类型必须可以兼容
每个子结果集不能包含order by 和 compute子句
SELECT * FROM T_TEST WHERE 成绩 >= 70
INTERSECT
SELECT * FROM T_TEST WHERE 成绩 <= 70
INTERSECT
SELECT * FROM T_TEST WHERE 成绩 = 70
unoin:得到两个或多个查询结果的并集,并且自动去掉重复号,不会排序
SELECT 班级,成绩 FROM T_TEST WHERE 成绩 >= 70
UNION
SELECT 班级,成绩 FROM T_TEST WHERE 成绩 <= 70
union all:得到两个或多个查询结果的并集,不会去掉重复行,也不会排序
SELECT 班级,成绩 FROM T_TEST WHERE 成绩 >= 70
UNION ALL
SELECT 班级,成绩 FROM T_TEST WHERE 成绩 <= 70
MINUS
可以对两个或多个结果集进行连接,形成“差集”。
返回左边结果集合中已经有的记录,而右边结果集中没有的记录
SELECT * FROM T_TEST WHERE 成绩 >= 70
MINUS
SELECT * FROM T_TEST WHERE 成绩 <= 70