数据集之间的运算

简介:

概述

关系数据库的起源起源于数学中的集合概念.所以集合与集合之间,也同样继承了数学集合之间的运算.而对于在关系数据库中,常常用于两个数据集中并没有直接的关系数据库中的“关系”,比如外键.但两个数据集会有间接的关系,比如两届比赛,参加比赛人员集合之间会有间接关系.

 

数据集运算的种类

在T-SQL中,关系运算实际上可以分为四类,首先看我们举例子用的表:

这里的例子表分别为两个不同会议参加的人员记录,分别为Meeting1和Meeting2,如下:

1_1 1_2

关系运算的具体可以分为以下四类:

1.A∩B,既是所求数据集既在A中,又在B中

在实例表中,实际的例子为既参加第一个会议,又参加第二个会议人的集合,如下图:

 

2

 

2.A∪B,既所求数据在数据集A中,或在数据集B中

在实例表中,实际的例子为参加第一个会议,或参加第二个会议人的集合,如下图:

3

 

3.A-B,既所求数据在数据集A中,不在数据集B中

在实例表中,实际的例子为参加了第一个会议,同时没有参加第二个会议的人的集合,如下图:

4

 

4.B-A,既所求数据在数据集B中,不在数据集A中

这个其实和上面第三种情况没有本质区别,只是顺序颠倒了一下,如下图:

5

 

数据集的来源

在T-SQL中,参与数据集运算的两个数据集可以来自任何返回数据集的表达式.比如,一张表,一张表的子集,多张表,临时表变量,虚拟列,甚至是一个scalar值

 

数据集运算的条件

并不是所有的数据集都可以做运算。就像一个苹果+一个鸭梨不能等于2一样,在T-SQL中,数据集之间的运算需要符合下面3个条件:

1.两个数据集之间必须有相同数量的列(Column)

2.两个数据集之间列出现的次序必须一致

3.两个数据集之间每一个对应的列的数据类型必须匹配

 

数据集运算在T-SQL中的实现

 

1.A∪B 使用UNION实现

T-SQL中提供了UNION来实现A∪B的运算,实际上UNION有两个版本,分别为:

UNION

UNION表示了A∪B的关系,当遇到两个数据集中相同的行时,保留唯一一个:

6

 

UNION ALL

UNION ALL同样实现了A∪B的逻辑,但与UNION不同的是,当遇到两个数据集中重复的行时,全部保留:

7

 

2.A∩B,使用INTERSECT实现

T-SQL提供了INTERSECT关键字来实现A∩B的关系:

8

 

3.A-B,使用EXCEPT实现

T-SQL提供了EXCEPT关键字来实现A-B的关系:

9

 

数据集运算的别名和排序

如果没有为数据列指定别名,则数据列的名称按照出现在第一个集合对应的列名算:

10

做UNION后:

11

如若我们想自定义列名,则需要为数据集运算中出现在第一位的数据集指定别名:

12

 

对运算后的结果进行排序

对运算后的结果进行排序是一件非常简单的事情,只需要在运算的最后加上ORDER BY子句,但是这里一定要注意:

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

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

 

13

 

总结

本文详细介绍了简单的集合运算,并给出了简单集合运算在T-SQL中的实现。在文章最后还介绍了运算的别名规则和排序规则.掌握集合之间的运算对更加清晰的了解T-SQL查询有很大的帮助。

分类:  SQL
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2012/09/18/2690764.html ,如需转载请自行联系原作者
相关文章
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
910 150
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1646 8
|
6天前
|
人工智能 前端开发 文件存储
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择
星哥带你玩转飞牛NAS,部署开源笔记TriliumNext!支持树状知识库、多端同步、AI摘要与代码高亮,数据自主可控,打造个人“第二大脑”。高效玩家的新选择,轻松搭建专属知识管理体系。
365 152
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
604 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
571 13
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话