返回顶部
首页 > 资讯 > 数据库 >9-oracle_union和union all
  • 863
分享到

9-oracle_union和union all

2024-04-02 19:04:59 863人浏览 独家记忆
摘要

UNIOn 是对结果集的并集操作,会要求 2 个集合是要有相同的字段和类型。 Union :对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序 Unio

UNIOn 是对结果集的并集操作,会要求 2 个集合是要有相同的字段和类型。

Union :对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序

Union all :对两个结果集进行并集操作,包括重复行,不进行排序


Union: 我们对同一个表做 2 次查询,查询的结果并没有出现重复的 2 条出现:

select user_no, dept_code, sales_amt

  from t_sales

union

select user_no, dept_code, sales_amt

  from t_sales;

9-oracle_union和union all

哪这条语句的默认规则排序是怎样排序的呢?是按我们查询字段的顺序进行升序排序的。上面则是按 user_no,dept_code,sales_amt 进行排序的,为了证明我们所说的,我们换下查询字段的顺序,按 sales_amt,user_no,dept_code 查询:

select sales_amt, user_no, dept_code

  from t_sales

union

select sales_amt, user_no, dept_code

  from t_sales;

9-oracle_union和union all

结果很明显是按我们所说的查询字段先后顺序后的升序排序的。

 

Union all :对 2 个查询的集合做并集,对重复的行不做处理:

select user_no, dept_code, sales_amt

  from t_sales

union all

select user_no, dept_code, sales_amt

  from t_sales;

9-oracle_union和union all

我们对表做了 2 次查询,所以出现了每条记录有 2 条。并且结果数据集也是乱序的。其实这个是我们的表面现象,在返回的结果集也是有顺序的:先返回第一个查询的结果,返回的顺序是按记录的插入顺序来的,再返回第二个查询的结果集,返回的顺序也是按记录的插入顺序来的。可以通过如下 2 个脚本来验证:

select user_no, dept_code, sales_amt

  from t_sales a

  where a.sales_amt <= 5000

union all

select user_no, dept_code, sales_amt

  from t_sales a

  where a.sales_amt > 3000 ;

9-oracle_union和union all

第一个查询返回的是蓝色的记录 3 条。

 

select user_no, dept_code, sales_amt

  from t_sales a

  where a.sales_amt > 3000

union all

select user_no, dept_code, sales_amt

  from t_sales a

  where a.sales_amt <= 5000 ;

9-oracle_union和union all

第一个查询返回的蓝色记录是 6 条,与上个脚本的第 2 个查询返回的记录一样,所以我们的 uinion all 返回也是有顺序的,先按查询脚本,再按单个脚本的记录插入顺序。



您可能感兴趣的文档:

--结束END--

本文标题: 9-oracle_union和union all

本文链接: https://lsjlt.com/news/45743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作