设为首页 收藏本站
查看: 806|回复: 0

[经验分享] SQL Server操作结果集-并集 差集 交集 结果集排序

[复制链接]

尚未签到

发表于 2017-12-14 13:35:40 | 显示全部楼层 |阅读模式
操作结果集
  为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为东吴的人物。
  表:Person_1魏国人物
DSC0000.jpg  

  表:Person_2蜀国人物
DSC0001.jpg

  A、Union形成并集
  Union可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。
  1、限定条件
  要是用Union来连接结果集,有4个限定条件。
  (1)、子结果集要具有相同的结构。
  (2)、字结果集的列数必须相同。
  (3)、子结果集对应的数据类型必须可以兼容。
  (4)、每个子结果集不能包含order by和compute子句。
  2、语法形式



    select_statement union [all] select_statement
  all代表最终的结果集中将包含所有的行,而不能删除重复行。
  示例:



  SELECT Name FROM Person_1
  UNION
  SELECT Name FROM Person_2
  生成的结果为:
DSC0002.jpg

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



  SELECT Name FROM Person_1
  UNION ALL
  SELECT Name FROM Person_2
  注意到重复记录,孙权与周瑜出现了两次,这就是UNION ALL 与 UNION的不同之处。
DSC0003.jpg

  B、Except形成差集
  Except可以对两个或多个结果集进行连接,形成“差集”。返回左边结果集合中已经有的记录,而右边结果集中没有的记录。
  限定条件:
  1、子结果集要具有相同的结构。
  2、子结果集的列数必须相同。
  3、子结果集对应的数据类型必须可以兼容。
  4、每个子结果集不能包含order by 和 compute子句。
  语法形式:



    select_statement except select_statement 
  自动删除重复行。
  示例:



  SELECT Name FROM Person_1
  EXCEPT
  SELECT Name FROM Person_2
  结果:
DSC0004.jpg

  留意到表Person_2有的,孙权周瑜已被去除。
  C、InterSect形成交集
  InterSect可以对两个或多个结果集进行连接,形成“交集”。返回左边结果集和右边结果集中都有的记录。
  1、限定条件  
  要是用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
  返回的结果如下:
DSC0005.jpg

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



  SELECT Name FROM Person_1
  INTERSECT
  SELECT Name FROM Person_2
  ORDER BY Name DESC    --此处的字段名相同了,如果不同,请切记排序列名,只能够是第一个表的列名
  这里只有两点要注意
  1.ORDER BY是对整个运算后的结果排序,并不是对单个数据集。
  2.ORDER BY后面排序的字段名称是第一个数据集的字段名或者别名。






分类: SQLServer:语句





好文要顶 关注我 收藏该文 DSC0006.png DSC0007.png



DSC0008.png

逆心
关注 - 31
粉丝 - 1713





+加关注



9

0







« 上一篇:T-SQL 运行时生成语句
» 下一篇:T-SQL 变量





最新IT新闻:
· 美团点评"霸王条款"被曝光:房源代理关系错综复杂
· 百度:换脸APP骗不了我们的人脸识别系统
· SpaceX执行了一次不回收火箭的发射 系两年来首次
· Gmail新型钓鱼攻击曝光:伪装成附件图片来窃取用户凭证
· 麦当劳开始测试iPhone点餐 即将全球推出
» 更多新闻...





最新知识库文章:


· 为什么我要写自己的框架?
· 垃圾回收原来是这么回事
· 「代码家」的学习过程和学习经验分享
· 写给未来的程序媛
· 高质量的工程代码为什么难写» 更多知识库文章...

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424016-1-1.html 上篇帖子: SQL Server聚合函数与聚合开窗函数 下篇帖子: 访问内网中的sql server数据库的简便方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表