我有两个问题,我进一步做了一个联合,以获得不同的结果。目前,它们是按字母顺序按名称排序的。
查询1:
Corporate Comp D
Corporate Comp E查询2:
Corporate Comp A
Corporate Comp B
Corporate Comp D
Corporate Comp E
Corporate Comp G因此,在合并后,结果是A,B,D,G,它是按字母顺序排列的,但是,我希望它按第一次查询来排序,所以基本上我希望这个顺序像
最终排序查询
Corporate Comp D
Corporate Comp E
Corporate Comp A
Corporate Comp B
Corporate Comp G发布于 2016-11-07 20:54:02
在这种情况下,不要使用UNION。以下是另一种选择:
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;或者,您可以使用聚合:
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;发布于 2016-11-07 21:05:46
你可以试试这个:-
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发布于 2016-11-07 22:43:39
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
;https://stackoverflow.com/questions/40474340
复制相似问题