一、集合运算的基本格式是:

集合查询1

<集合运算>

集合查询2

[order by ...]

二、集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定。(可以用来连接多个结果);集合运算对行进行比较时,认为两个NULL值相等。

三、union和union all(并集)集合运算

union(并集)集合运算可以将多个查询结果集合并成一个结果集。union(隐含distinct,去除重复)、union all。

--UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
select tName,tSex from teacher
union
select sName,sSex from student
--UNION ALL合并两个查询结果集,返回所有数据,不会去掉重复的数据
select tName,tSex from teacher
union all
select sName,sSex from student

Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL

四、intersect(交集)集合运算:删除两个集合中的重复行,返回只有在两个集合中都出现的行

--先将其中完全重复的数据行删除,再对两个查询结果集取其交集
select tName,tSex from teacher
intersect
select sName,sSex from student

ANSI SQL 支持带有all选项的intersect集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法:

with intersect_all as
(
select row_number() over(partition by tName,tSex order by (select 0)) as rowNum,
tName,tSex from teacher
intersect
select row_number() over(partition by sName,sSex order by (select 0)) as rowNum,
sName,sSex from student
)
select tName,tSex from intersect_all --备注:在排序函数的over子句中使用order by (select <常量>)用这种方法可以告诉SQL Server不必在意行的顺序

五、except(差集)集合运算:先将其中完全重复的数据行删除,再返回只在第一个集合中出现,在第二个集合中不出现的所有行。

select tName,tSex from teacher
except
select sName,sSex from student

ANSI SQL 支持带有all选项的except集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法:

with except_all as
(
select row_number() over(partition by tName,tSex order by (select 0)) as rowNum,
tName,tSex from teacher
except
select row_number() over(partition by sName,sSex order by (select 0)) as rowNum,
sName,sSex from student
)
select tName,tSex from except_all --备注:在排序函数的over子句中使用order by (select <常量>)用这种方法可以告诉SQL Server不必在意行的顺序

六、集合运算的优先级:intersect运算比union和except运算的优先级高,而union和except的优先级相等

集合运算—union(并集)、intersect(交集)和except(差集)的更多相关文章

  1. SQL Server中的集合运算: UNION, EXCEPT和INTERSECT

    SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...

  2. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  3. 集合运算(UNION)

    表的加法 集合运算:就是满足统一规则的记录进行的加减等四则运算. 通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合. 集合运算符:用来进行集合的运算符. UNIO ...

  4. 【TOJ 1743】集合运算(set并、交、差集)

    Description 给定两个集合A和B的所有元素,计算它们的交.并.差集. Input 输入数据有多组,第一行为数据的组数T,接下来有2T行,每组数据占2行,每行有若干个整数,第一行的所有整数构成 ...

  5. 详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...

  6. 集合操作符 Union / Union All / Intersect / Minus

    集合操作符 Union / UnionAll / Intersect / Minus -- 生成测试数据 create table dept_01 as select * from dept wher ...

  7. Oracle学习(七):集合运算

    1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10 ...

  8. SQL基础学习_06_集合运算和联结

    集合运算 1. 并集:UNION     例:     SELECT shohin_id, shohin_mei    FROM Shohin    UNION    SELECT shohin_id ...

  9. ​《数据库系统概念》4-DDL、集合运算、嵌套子查询

    一.DDLa) SQL Data DefinitionSQL的基本数据类型有char(n).varchar(n).int.smallint.numeric(p,d).real,double preci ...

随机推荐

  1. 20181017 PL/SQL 记录

    1. 配置DB 链接文件,帮助中找到tnsnames.ora文件路径,进行注册数据库信息,登陆即可. 这只是个客户端,具体服务器段数据库情况不清楚. 2.写法区别PL/SQL 和SQL 变量定义 赋值 ...

  2. Java面试总结(面试流程及核心面试题)

    Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍      我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...

  3. mysql在linux上的安装

    前提: 环境:workstation 11 + CentOS 7 + mysql-5.6.40 安装前先查看服务器里是否有老版本的mysql已经被安装了 rpm -qa|grep mysql 如果有就 ...

  4. 怎样使用EOS.JS的API

    https://medium.com/coinmonks/how-to-use-eosjs-api-1-770b037b22ad https://blog.csdn.net/mongo_node/ar ...

  5. awesome vue

    https://blog.csdn.net/caijunfen/article/details/78216868

  6. [py]环境变量的获取os.environ.get和设置

    $ export name='maotai' $ python >>> import os >>> os.environ.get('name', "&qu ...

  7. Mongodb 基础 复制集原理和搭建

    数据复制原理 开启复制集后,主节点会在local库下生成一个集合叫 oplog.rs,这是一个有限的集合,即大小固定.这个集合记入了整个mongod实例一段时间内数据库的所有变更操作(如:增/删/改) ...

  8. NetBeans issues and solutions.(build.xml and debug multiple projects)

    Copy a directory to another directory when building the .jar in NetBeans in the build.xml file. Solu ...

  9. Reported time is too far out of sync with master. Time difference of 52692ms > max allowed of 30000ms

    RegionServer与Master的时间不一致造成的.由错误内容可以看出两台机器之间最大的误差时间为30000ms,一旦超过这个值便无法启动. 解决办法:同步RegionServer与Master ...

  10. webpack使用雪碧图插件

    1.先安装插件 npm install --save-dev webpack-spritesmith 2.配置webpack 配置之前 先引入var SpritesmithPlugin = requi ...