首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询排序顺序问题

查询排序顺序问题
EN

Stack Overflow用户
提问于 2016-11-07 20:49:06
回答 3查看 49关注 0票数 0

我有两个问题,我进一步做了一个联合,以获得不同的结果。目前,它们是按字母顺序按名称排序的。

查询1:

代码语言:javascript
复制
 Corporate Comp D
 Corporate Comp E

查询2:

代码语言:javascript
复制
 Corporate Comp A
 Corporate Comp B
 Corporate Comp D
 Corporate Comp E
 Corporate Comp G

因此,在合并后,结果是A,B,D,G,它是按字母顺序排列的,但是,我希望它按第一次查询来排序,所以基本上我希望这个顺序像

最终排序查询

代码语言:javascript
复制
 Corporate Comp D
 Corporate Comp E
 Corporate Comp A
 Corporate Comp B
 Corporate Comp G
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-07 20:54:02

在这种情况下,不要使用UNION。以下是另一种选择:

代码语言:javascript
复制
select qq.col
from ((select q.col, 1 as which
       from query1 q
      ) union all
      (select q.col, 2 as which
       from query2 q
       where not exists (select 1 from query1 q1 where q1.col = q.col)
      )
     ) qq
order by qq.which, qq.col;

或者,您可以使用聚合:

代码语言:javascript
复制
select qq.col
from ((select q.col, 1 as which
       from query1 q
      ) union all
      (select q.col, 2 as which
       from query2 q
      )
     ) qq
group by qq.col
order by min(qq.which), qq.col;
票数 2
EN

Stack Overflow用户

发布于 2016-11-07 21:05:46

你可以试试这个:-

代码语言:javascript
复制
select 
    *
from 
(
    select col from query1
    union
    select col from query2
) d
order by 
    case when col in (select col from query1) then 0 else 1 end, 
    col
票数 0
EN

Stack Overflow用户

发布于 2016-11-07 22:43:39

代码语言:javascript
复制
select      col

from       (          select distinct 1 as i,col from query1
            union all (select 2,col from query2 minus select 2,col from query1)
           ) t

 order by   i,col      
 ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40474340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档