【IT168 服务器学院】使用集合操作
UNION
select employee_id,job_id from employees
union
select employee_id,job_id from job_history;
两个表的并集,但不显示重复行。
执行的时候要先排序再剔重,所以结果集是有序的。
union all
也是两个表的并集,而且显示重复行。
语法同上。
intersect
select employee_id,job_id from employees
intersect
select employee_id,job_id from job_history;
minus
select employee_id,job_id from employees
minus
select employee_id,job_id from job_history;
e-j=e-e与j的交集;
j-e=j-j与e的交集;
注:
在select 列表中的表达式必须有同样的数目和类型。
匹配 SELECT 语句
select employee_id,job_id,salary from employees
union
select employee_id,job_id,0 from job_history;
括号可以用拉修改序列的执行顺序。
ORDER BY 子句:
只能在整个集合的最后出现;
可以按照第一个 SELECT 语句中的列名,别名或者位置号排序。
GROUP BY 子句的增强
CUBE 操作符的 GROUP BY
在 GROUP BY 子句中使用 ROLLUP 或者 CUBE 来产生分组小计;
ROLLUP 分组产生包括规则的分组结果和小计的结果的组合;
GROUP BY [ROLLUP](col_name_list)
ROLLUP:
a ab abc
abc
ab ab
a a a
all all all
CUBE 分组产生包括 ROLLUP 产生的结果和交叉分组小计。
cube:
a ab abc
a ab abc
all a ab
b ac
all bc
a
b
c
all