SQL集合运算:差集、交集、并集
2011年03月30日 15:41:00
阅读数:15446
1、差集( except )
select a from t_a
except
select a from t_b
-- 也可写作:
select a from t_a where a not in (select a from t_b)
-- 多个字段时:
select a,b from t_a
except
select a,b from t_b
-- 多字段的查集也可写成:
select a,b from t_a where (a,b) not in (select a,b from t_b)
2、交集( intersect )
select a from t_a
intersect
select a from t_b
-- 也可写作:
select a from t_a where a in (select a from t_b)
3、并集( union )
select a from t_a
union distinct
select a from t_b
写法:
A 并 B 去掉重复记录----union
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
union
select empno, ename ,salary ,deptno from employee_ccy where salary>100
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
A 并 B 去掉重复记录----unionselect empno, ename ,salary ,deptno from employee_ccy where deptno=10
union
select empno, ename ,salary ,deptno from employee_ccy where salary>100
--union all 不排序,不去重复
select empno, ename ,salary ,deptno from employee_ccy where deptno=10 union all
select empno, ename ,salary ,deptno from employee_ccy where salary>100
---交集-----intersect
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
intersect
select empno, ename ,salary ,deptno from employee_ccy where salary>100
--差集--------minus
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
minus
select empno, ename ,salary ,deptno from employee_ccy where salary>100
-------------用两个结果集的差集 ,获得
select deptno,dname ,location from department_ccy where deptno in(select deptno from department_ccy
minus
select distinct deptno from employee_ccy )
希望对你有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)