关于排序问题。
我现在有一个表sub。排序时需要用以下几个字段:ispublic,istop,toptime,subtime
第一是把ispublic=1的数据按subtime降序排在最前面,
第二是把istop=1的数据按toptime降序排在其次。
第三是把剩下的按照subtime降序排列。
select * from sub where isnull(ispublic,0)=1 order by subtime desc
union all
select * from sub where isnull(istop,0)=1 and isnull(ispublic,0) <> 1 order by toptime desc
union all
select * from sub where isnull(istop,0) <> 1 and isnull(ispublic,0) <> 1 order by subtime desc
按照想法是这样排。不过sql的语法不允许。所以求高手给一答案。
------解决方案--------------------select * from sub
order by case
when ispublic=1 then 1
when istop=1 then 2
else 3 end,
subtime desc,toptime desc
------解决方案--------------------如果你加了Order By 再Union All
是需要指定Top的
------------------
Limpire(昨夜小楼)已经给出了正确答案了