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

(感谢 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的排序也是按所有列出现的顺序全量排序!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-677667/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22664653/viewspace-677667/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值