SQL Server操作结果集-并集 差集 交集 结果集排序

操作结果集

  为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为东吴的人物。

  表:Person_1魏国人物

  SQL Server操作结果集-并集 差集 交集 结果集排序 

  表:Person_2蜀国人物

  SQL Server操作结果集-并集 差集 交集 结果集排序

  A、Union形成并集

    Union可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。

    1、限定条件

     要是用Union来连接结果集,有4个限定条件。

     (1)、子结果集要具有相同的结构。

     (2)、字结果集的列数必须相同。

     (3)、子结果集对应的数据类型必须可以兼容。

     (4)、每个子结果集不能包含order by和compute子句。

     2、语法形式

    select_statement union [all] select_statement

   all代表最终的结果集中将包含所有的行,而不能删除重复行。文章来源地址https://www.yii666.com/article/754334.html

    示例:

  SELECT Name FROM Person_1
  UNION
  SELECT Name FROM Person_2

   生成的结果为:

   SQL Server操作结果集-并集 差集 交集 结果集排序

  注意到重复记录,孙权与周瑜仅仅显示了一个。下面来将UNION替换成UNION ALL看看是什么结果:

  SELECT Name FROM Person_1
  UNION ALL
  SELECT Name FROM Person_2

  注意到重复记录,孙权与周瑜出现了两次,这就是UNION ALL 与 UNION的不同之处。

  SQL Server操作结果集-并集 差集 交集 结果集排序

   B、Except形成差集

   Except可以对两个或多个结果集进行连接,形成“差集”。返回左边结果集合中已经有的记录,而右边结果集中没有的记录。

   限定条件:网址:yii666.com<

    1、子结果集要具有相同的结构。

    2、子结果集的列数必须相同。

    3、子结果集对应的数据类型必须可以兼容。

    4、每个子结果集不能包含order by 和 compute子句。

    语法形式:

    select_statement except select_statement 

    自动删除重复行。

    示例:

  SELECT Name FROM Person_1
  EXCEPT
  SELECT Name FROM Person_2

    结果:

    SQL Server操作结果集-并集 差集 交集 结果集排序

    留意到表Person_2有的,孙权周瑜已被去除。

  C、InterSect形成交集

    InterSect可以对两个或多个结果集进行连接,形成“交集”。返回左边结果集和右边结果集中都有的记录。

  1、限定条件  网址:yii666.com

    要是用Except来连接结果集,有4个限定条件。

    (1)、子结果集要具有相同的结构。

    (2)、子结果集的列数必须相同。

    (3)、子结果集对应的数据类型必须可以兼容。

    (4)、每个子结果集不能包含order by或compute子句。

  2、语法形式

  select_statement intersect select_statement        

  示例:

  SELECT Name FROM Person_1
  INTERSECT
  SELECT Name FROM Person_2

   返回的结果如下:

   SQL Server操作结果集-并集 差集 交集 结果集排序

   留意到只取两张表都有的记录(周瑜,孙权),这就是所谓的交集。

  D、结果集的排序

  SELECT Name FROM Person_1
  INTERSECT
  SELECT Name FROM Person_2
  ORDER BY Name DESC    --此处的字段名相同了,如果不同,请切记排序列名,只能够是第一个表的列名

  这里只有两点要注意文章来源地址:https://www.yii666.com/article/754334.html

  1.ORDER BY是对整个运算后的结果排序,并不是对单个数据集。

  2.ORDER BY后面排序的字段名称是第一个数据集的字段名或者别名。

 
分类: SQLServer:语句
 
好文要顶 关注我 收藏该文 SQL Server操作结果集-并集 差集 交集 结果集排序 SQL Server操作结果集-并集 差集 交集 结果集排序
SQL Server操作结果集-并集 差集 交集 结果集排序
逆心
关注 - 31
粉丝 - 1713
 
 
+加关注
9
0
 
 
 
«上一篇:T-SQL 运行时生成语句
»下一篇:T-SQL 变量
最新IT新闻:
· 美团点评"霸王条款"被曝光:房源代理关系错综复杂
· 百度:换脸APP骗不了我们的人脸识别系统
· SpaceX执行了一次不回收火箭的发射 系两年来首次
· Gmail新型钓鱼攻击曝光:伪装成附件图片来窃取用户凭证
· 麦当劳开始测试iPhone点餐 即将全球推出
» 更多新闻...
 
最新知识库文章:
· 为什么我要写自己的框架?
· 垃圾回收原来是这么回事
· 「代码家」的学习过程和学习经验分享
· 写给未来的程序媛
· 高质量的工程代码为什么难写

» 更多知识库文章...文章地址https://www.yii666.com/article/754334.html

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

SQL Server操作结果集-并集 差集 交集 结果集排序-相关文章

  1. 比较sql server两个数据库

  2. SQL Server两种分页的存储过程介绍

  3. SQL Server操作结果集-并集 差集 交集 结果集排序

  4. sql server两种分页方法

  5. SQL 获得两个时间段之间的数据

    一般保存在数据库中的日期精度很高,比如\\\'2014-04-15 16:31:22.000\\\'而一般用户选择的时间精度是精确到日的,比如\\\'2012-04-15\\\'所以你想取出两个日期之间的数据,如果用下面的语句select * from your_table where date_field between \\\'2014-04-15\\\' AND \\\'2014-04-15\\\'其实系统会转化为select * from your_table wher

  6. Sql查询两个时间段有重叠的记录

    这个问题看上去简单,但是想了很久,最后发现,自己的思路有点乱。下面四条时间段都和最上面那个有重叠的关系,就是这么个意思。这里是问题的答案:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png