1、集合运算符概述

(1)集合运算符运用与集合之间的运算、

(2)多元集合: 指的是来自两个输入查询的集合,可能包含重复项

(3)T-SQL 支持三种集合运算符 union 、intersect 、except

2、集合运算符的一般形式和要求

(1)一般形式

input query1
<set_operater>
input query2
order by ...

(2)要求

①安装集合运算符定义,集合运算符应用于两个集合,集合是无序的,因此所涉及的两个query 都不能有order by子句 ,但是可以在运算符结果中使用order by 进行排序

②集合运算符所涉及的两个查询应当具有相同的列数,并且数据类型兼容

③集合运算符结果由第一个query确定,因此如果需要分配别名,应该在第一个查询中分配

④集合运算符比较行时,认为两个NULL 是相等的

⑤标准的SQL对运算符支持 两种行为 , DISTINCT 和 ALL , distinct 消除重复行、all 不会消除重复行,直接返回多元集合,sql server 三种集合运算符默认都是distinct , 且只有UNION支持 all ,需显式指定

3、UNION 运算符

常用,略

4、INTERSECT

(1)intersect 用于取集合A和B 的交集

(2)只要某行返回了,他在多个多元集合中都至少出现一次

(3)返回的结果默认是distinct ,消除重复行的,且认为NULL和NULL是相等的

(4) 标准SQL 实际支持 intersect all 的行为,但是在sql server 2012 中尚未实现

5、EXCEPT运算符

(1)用于计算A和B 的差异(A-B)

(2)返回的行,至少在A中出现1次、在B中出现0次

6、集合运算符的优先级

intersect > union = except

7、规避不支持的逻辑运算

集合元素符的结果,只能使用order by 逻辑阶段,如果需要对运算符结果应用除了order by 之外的其他逻辑阶段,就需要使用表表达式,如派生表

select country ,count(*) as numlocations
from
(
select country, region, city from HR.Employees
UNION
select country, region, city from Sales.Customers
) as U
group by U.country

有时确实需要在在集合运算涉及的两个query中使用orderby ,比如两个query都要限制行数、分页等 ,也可以使用类似的方案解决

SELECT empid, orderid, orderdate
FROM (SELECT empid, orderid, orderdate
FROM Sales.Orders
WHERE empid = 3
ORDER BY orderdate DESC, orderid DESC
OFFSET 0 ROWS FETCH FIRST 2 ROWS ONLY) AS D1 UNION ALL SELECT empid, orderid, orderdate
FROM (SELECT empid, orderid, orderdate
FROM Sales.Orders
WHERE empid = 5
ORDER BY orderdate DESC, orderid DESC
OFFSET 0 ROWS FETCH FIRST 2 ROWS ONLY) AS D2;

SqlServer 集合运算符的更多相关文章

  1. 小谈KVC中KeyPath的集合运算符

    由于知识点比较简单,这里不再陈述一大堆的原理,直入主题. KVC中的集合运算符有以下三类: 1.简单集合运算符:@avg.@sum.@max.@min.@count (只能用在集合对象中,对象属性必须 ...

  2. Oracle集合运算符 交集 并集 差集

     集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集  一.union求并集,公共部分只有包含一次 例:求emp表ename中含’A‘或含有‘M’ SQL&g ...

  3. SQL的集合运算符介绍

    最近学习了SQL SERVER方面的知识,毕竟做Web应用,少不了跟数据库打交道.学习的来源主要是<程序员的SQL金典>这本书. 今天介绍数据库里面的集合运算符,它是指匹配集合的每一个结果 ...

  4. oracle 集合运算符

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAY4AAACNCAIAAAAvhQoxAAAbmklEQVR4nO1dX6jc1pn/0lBH4KVV6J ...

  5. 集合运算符之全集、交集、补集【weber出品必属精品】

    集合的概念 与数学中的全集.交集.补集的概念是一样的 常用的集合运算符 集合运算符的作用:把两个查询构造为一个联合查询 1. 全集:求连个查询的全集 union all:将两个查询的所有数据全部列出, ...

  6. LINQ之路16:LINQ Operators之集合运算符、Zip操作符、转换方法、生成器方法

    本篇将是关于LINQ Operators的最后一篇,包括:集合运算符(Set Operators).Zip操作符.转换方法(Conversion Methods).生成器方法(Generation M ...

  7. Oracle的集合运算符

    Oracle的集合运算符有并集union.union all,交集intersect,差集minus 先建表myemp,进行集合运算的测试 create table myemp as select * ...

  8. T-SQL:探究UNOIN,INTERSECT,EXCEPT集合运算符(十一)

    1.UNOIN运算符 unoin合并了两个输入查询结果 并消除重复项  简单点说   就是输出并集 SELECT country, region, city FROM HR.Employees UNI ...

  9. sqlserver集合操作

    SQLServer2005通过intersect,union,except和三个关键字对应交.并.差三种集合运算 详细如下 use tempdb go if (object_id ('t1' ) is ...

随机推荐

  1. 41和为S的连续正数序列+注意循环条件记一下这题特殊解法

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  2. OSX10.10 Yosemite安装Metasploit

    安装环境 操作时间: 2015/6/8 操作系统: OSX Yosemite 10.10.3 Metasploit版本: v4.11.0-dev [core:4.11.0.pre.dev api:1. ...

  3. Java设计模式之Iterator模式

    分类: [java]2013-07-15 10:58 917人阅读 评论(0) 收藏 举报 所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式.本文以java中的容器为例 ...

  4. Django 利用第三方平台实现用户注册

    前言: 登陆和注册功能是一个功能比较完善的网站必备的功能,其中涉及的业务逻辑实用性较强,所以我将Django的注册功能进行了总结,希望可以帮助大家.我们这次使用的第三方短息平台是云通信,当然你可以用其 ...

  5. Golang函数-递归函数

    Golang函数-递归函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. 51nod 1391:01串

    1391 01串 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给定一个01串S,求出它的一个尽可能长的子串S[i. ...

  7. VUE - 取消默认事件

    1,在 methods 中 <template>   <div>       <form @submit="addTodo">          ...

  8. Android的事件处理机制之基于回调的事件处理

    回调机制 如果说事件监听机制是一种委托式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源与事件监听器是统一的,换种方法说事件监听器完全消失了,当用户在GUI组件上激发某个事件 ...

  9. JAVA Random 详解

    Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范 ...

  10. poj 1027 Ignatius and the Princess II全排列

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...