SQL集合操作符笔记
2015-09-28 20:12
267 查看
借助老婆的电脑,简单地对sql的四个集合操作符做个笔记。
Oracle SQL里实现了四个和集合运算相关操作符:UNION,UNION ALL,INTERSECT,MINUS
除了UNION ALL之外,其他三个操作符都要对结果集进行去重和排序,而UNION ALL既不去重也不排序。
UNION,可以理解为合并,就是合并两个结果集,并去重和排序。
UNION ALL,则可以理解为不去重也不排序的合并。
INTERSECT,可以理解为数学上的交集(反正我是这样想的),就是两个结果集的共同拥有的部分,也要对最终的结果集进行去重和排序。
MINUS,可以理解为相减(反正我也是这样理解的),描述稍微复杂些:
select A from table1
MINUS
select B from table2
意思是A减去A和B的交集,比如A(1,1,2,3),B(2,3,4),那么上面的sql运算结果为(1),要去重和排序的。
好像在标准sql里,没有MINUS这个操作符,取而代之是EXCEPT,不知道为什么Oracle为什么要自己搞一套。
Oracle SQL里实现了四个和集合运算相关操作符:UNION,UNION ALL,INTERSECT,MINUS
除了UNION ALL之外,其他三个操作符都要对结果集进行去重和排序,而UNION ALL既不去重也不排序。
UNION,可以理解为合并,就是合并两个结果集,并去重和排序。
UNION ALL,则可以理解为不去重也不排序的合并。
INTERSECT,可以理解为数学上的交集(反正我是这样想的),就是两个结果集的共同拥有的部分,也要对最终的结果集进行去重和排序。
MINUS,可以理解为相减(反正我也是这样理解的),描述稍微复杂些:
select A from table1
MINUS
select B from table2
意思是A减去A和B的交集,比如A(1,1,2,3),B(2,3,4),那么上面的sql运算结果为(1),要去重和排序的。
好像在标准sql里,没有MINUS这个操作符,取而代之是EXCEPT,不知道为什么Oracle为什么要自己搞一套。
相关文章推荐
- MYSQL报错:access denied for user 'odbc'@'localhost'(using password: NO)
- log4j打印sql
- MongoDB 3.0 用户创建
- [redis] redis 如何删除匹配模式的多个key值
- 使用memcache处理Session信息
- c# 连接ACCESS数据库
- ORACLE增删改查
- mysql binlog参数设置
- MySQL数据库配置文件之my.ini小札记
- 深入解析Oracle 10g中SGA_MAX_SIZE和SGA_TARGET参数的区别和作用
- 深入解析Oracle 10g中SGA_MAX_SIZE和SGA_TARGET参数的区别和作用
- mysql数据库入门
- Mongodb之JavaApi调用例子
- sql 左联 右联 内联的区别
- Oracle 数据库基础知识点总结(一)
- Postgresql创建表后无法添加数据
- oracle分布式事务总结-转载
- mysql 排序 特殊数据置顶
- SQLite数据库建立主键/外键的方法
- CentOS安装Redis记录