我想对union
语句的一侧进行排序,如下面的代码所示。但order by
只能union
语句的一部分是不可能的,当我对view
的部分使用order by
时,它会让我对整理中的冲突产生一些错误。那么,我如何才能通过union
声明的一方订购?
select Creator
, CreateDate
, Subject
from tblWkfTicket
where tblWkfTicket.ID = @tikectID
union
select Creator
, CreateDate
, '' AS Subject
from tblWkfPost
where TicketID = @tikectID
order by tblWkfPost.ID
;
答案 0 :(得分:2)
您必须写一个ORDER BY
适用于整个结果集。假设您确实希望第一个查询的结果出现在第二个查询的结果之前,并且第二个查询的结果按ID
排序,则需要执行以下操作:
select Creator,CreateDate,Subject
from
(
select Creator
, CreateDate
, Subject,
, 1 as resSet
, 0 as ID
from tblWkfTicket
where tblWkfTicket.ID = @tikectID
union all
select Creator
, CreateDate
, '' AS Subject
, 2
, ID
from tblWkfPost
where TicketID = @tikectID
) t
order by
resSet,
ID;
答案 1 :(得分:1)
试
select *
from (
select 1 seq
, null postid
, emb.Creator
, emb.CreateDate
, emb.Subject
from (
select Creator
, CreateDate
, Subject
from tblWkfTicket
where tblWkfTicket.ID = @tikectID
) emb
union all
select 2 seq
, tblWkfPost.IDpostid
, Creator
, CreateDate
, '' AS Subject
from tblWkfPost
where TicketID = @tikectID
)
order by seq
, postid
;
保证您的订购要求