Oracle 19C学习 - 09. 使用集合运算符UNION和UNION ALL
2021/5/10 2:25:20
本文主要是介绍Oracle 19C学习 - 09. 使用集合运算符UNION和UNION ALL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
(本博文采用的数据库是Oracle自带的hr用户范本数据库)
集合操作准则
- SELECT列表中的表达式必须在数字上匹配。
- 后续查询中每列的数据类型必须与第一个查询中其对应列的数据类型匹配。
- ORDER BY子句只能出现在语句的最后。
- 来自第一个查询的列名将出现在结果中。
- 默认情况下,输出以升序排序,但UNION ALL除外。
实例注解:
- 后续查询中每列的数据类型必须与第一个查询中其对应列的数据类型匹配:
第一个查询得到两个列的数据,第二个查询同样得到两个列的数据,并且COL1和COL3的数据类型要相同; COL2和COL4的数据类型要相同。
- 来自第一个查询的列名将出现在结果中:
UNION后得到的视图的两个列的列名叫做COL1和COL2.
SELECT COL1, COL2 FROM TAB UNION ALL SELECT COL3, COL4 FROM TAB
UNION ALL运算符
将第一个查询的结果和第二个查询的结果拼接起来,不去重。
UNION运算符
将第一个查询的结果和第二个查询的结果拼接起来,去重。
--UNION去重-- SELECT 'A' ,'B' FROM dual UNION SELECT 'A', 'B' FROM dual; ' ' - - A B --UNION ALL不去重-- SELECT 'A' ,'B' FROM dual UNION ALL SELECT 'A', 'B' FROM dual; ' ' - - A B A B
INTERSECT相交运算符
返回两个查询结果共有的行(下图的黄色部分)
SELECT * FROM employees INTERSECT SELECT * FROM employees WHERE salary > 10000; --相交后,只保留工资大于一万的查询结果
MINUS相减运算符
返回第一个查询结果中所有在第二个查询结果中不存在的行(下图的黄色部分), 用大的结果集去减小的结果集。
SELECT * FROM employees MINUS SELECT * FROM employees WHERE salary > 10000;
--相减后,只保留工资小于等于一万的查询结果
在集合操作中使用ORDER BY子句
- 在复合查询的末尾,ORDER BY子句只能出现一次。
- ORDER BY子句仅识别第一个SELECT查询结果集的列名。
- 默认情况下,第一个SELECT查询的第一列用于按升序对输出进行排序。
SELECT last_name, salary FROM employees MINUS SELECT last_name, salary FROM employees WHERE salary > 10000 ORDER BY salary DESC; --ORDER BY出现在最后一个查询语句,不能出现在别的位置。
这篇关于Oracle 19C学习 - 09. 使用集合运算符UNION和UNION ALL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享