针对同一个表的多个SELECT,但具有不同的ORDER BY

时间:2012-01-27 03:01:46

标签: sql-server select union

我想从同一个表中获取数据,但是根据第三个字段的值按2个不同的字段排序

SELECT * FROM MyTable
WHERE Status = 0
ORDER BY SortOrder

UNION

SELECT * FROM MyTable
WHERE Status = 1
ORDER BY ModifiedAt DESC

当然,我不能在UNION中有2个ORDER BY,所以想知道是否有更好的(性能方面)方式而不必求助于2个数据库查询 - 可能通过某种子查询?

1 个答案:

答案 0 :(得分:1)

您可以按顺序使用case

select *
from YourTable
where Status in (0, 1)
order by Status,
         case when Status = 0 then SortOrder end,
         ModifiedAt desc