【SQL 学习】UNION 的排序方式!

简介: (感谢dingjun123版主 为本文提供帮助)union怎么排序?许多人肯定会说 根据第一字段来排序,呵呵,这个答案能得50分!考虑到如果select的第一个字段是重复时,会怎样?看一个测试!SQL> select 1 id ,'a1' val ,'b...
(感谢 dingjun123版主 为本文提供帮助)
union怎么排序?
许多人肯定会说 根据第一字段来排序,呵呵,这个答案能得50分!考虑到如果select的第一个字段是重复时,会怎样?看一个测试!

SQL> select 1 id ,'a1' val ,'b1' text from dual
  2  union
  3  select 1 ,'a1' ,'b3' from dual
  4  union
  5  select 1 ,'a1' ,'b2' from dual;

        ID VA TE                                                                
---------- -- --                                                                
         1 a1 b1                                                                
         1 a1 b2                                                                
         1 a1 b3  --每个字段都有排序的。                                                              
从上面的结果可以看出,显然这不是根据第一字段来排序的,再看下一个:
SQL> select 1 id ,'a1' val ,'b1' text from dual
  2  union
  3  select 1 ,'a1' ,'b3' from dual
  4  union
  5  select 1 ,'a1' ,'b2' from dual
  6  union
  7  select 1 ,'a2' ,'b3' from dual
  8  union
  9  select 1 ,'a2' ,'b1' from dual
 10  union
 11  select 1 ,'a2' ,'b2' from dual;

        ID VA TE                                                                
---------- -- --                                                                
         1 a1 b1                                                                
         1 a1 b2                                                                
         1 a1 b3                                                                
         1 a2 b1                                                                
         1 a2 b2                                                                
         1 a2 b3                                                                

已选择6行。

基本上从这里可以得出 union 执行的排序是全量排序,即对select 语句所包含的所有字段进行排序
再次验证一下:

SQL> select 1 id ,'a1' val ,'b1' text from dual
  2  union
  3  select 1 ,'a1' ,'b3' from dual
  4  union
  5  select 1 ,'a1' ,'b2' from dual
  6  union
  7  select 1 ,'a2' ,'b3' from dual
  8  union
  9  select 1 ,'a2' ,'b1' from dual
 10  union
 11  select 1 ,'a2' ,'b2' from dual
 12  union
 13  select 2 ,'a1' ,'b2' from dual
 14  union
 15  select 2 ,'a2' ,'b1' from dual
 16  union
 17  select 2 ,'a2' ,'b2' from dual
 18  union
 19  select 2 ,'a2' ,'b3' from dual
 20  union
 21  select 3 ,'a2' ,'b3' from dual
 22  union
 23  select 3 ,'a1' ,'b2' from dual;

        ID VA TE                                                                
---------- -- --                                                                
         1 a1 b1                                                                
         1 a1 b2                                                                
         1 a1 b3                                                                
         1 a2 b1                                                                
         1 a2 b2                                                                
         1 a2 b3                                                                
         2 a1 b2                                                                
         2 a2 b1                                                                
         2 a2 b2                                                                
         2 a2 b3                                                                
         3 a1 b2                                                                
         3 a2 b3          - --可以看出每个字段有排序了!所以union是全量排序的~!                                                      
已选择12行。
另外,minus,intersect的排序也是按所有列出现的顺序全量排序!
目录
相关文章
|
4月前
|
SQL 数据库
【SQL】已解决:SQL分组去重并合并相同数据
【SQL】已解决:SQL分组去重并合并相同数据
80 1
【SQL用法】sql语句中order by后多条件进行排序的问题
【SQL用法】sql语句中order by后多条件进行排序的问题
249 0
|
SQL 数据库
使用 SQL 进行排序查询
在数据库中,我们经常需要对查询的结果进行排序,以便更容易地理解和分析数据。SQL(Structured Query Language)提供了强大的排序功能,允许我们按照指定的列对数据进行升序或降序排序。本文将详细介绍如何使用 SQL 进行排序查询,包括基本的排序语法、多列排序、自定义排序顺序等内容。
356 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
本篇文章讲解的主要内容是:***有重复数据的数据集用UNION后得到的数据与预期不一致如何解决,当两个表中有重复数据时,UNION的去重功能被忽略,UNION过程中如何识别展示出来、空值与空字符串的关系以及在UNION ALL中的使用、UNION与OR可以互相改写以及使用中的注意事项。***
【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
SQL语句中union all和union的区别以及用法
SQL语句中union all和union的区别以及用法
135 0
|
SQL
【SQL系列】复杂排序
【SQL系列】复杂排序
265 0
|
SQL
【SQL系列】按多字段排序
【SQL系列】按多字段排序
117 0
|
SQL Oracle 关系型数据库
SQL 去重的 3 种方法​,还有谁不会?
SQL 去重的 3 种方法​,还有谁不会?
369 0
SQL 去重的 3 种方法​,还有谁不会?
|
SQL
SQL 分组查询 -简述及举例
SQL 分组查询 -简述及举例
173 0
|
SQL 关系型数据库 MySQL
【sql语句基础】——查(select)(单表查询顺序补充)
【sql语句基础】——查(select)(单表查询顺序补充)