首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

小弟我在一个sql语句中同时使用了UNION ALL和order,就非要加top

2012-01-10 
我在一个sql语句中同时使用了UNION ALL和order,就非要加top?SELECT *FROM (SELECT TOP 10000 *FROM TWHERE

我在一个sql语句中同时使用了UNION ALL和order,就非要加top?
SELECT *
FROM (SELECT TOP 10000 *
  FROM T
  WHERE (state = 'wait')
  ORDER BY id DESC) a
UNION ALL
SELECT *
FROM (SELECT TOP 10000 *
  FROM T
  WHERE (state = 'ok')
  ORDER BY id DESC) b

上面的sql语句会把状态是等待的数据先排在前面,状态是完成的数据排在后面显示,已经达到了我的要求,但是这个top蛮不爽的,去掉就会报错,我现在只能把它设置成一个很大的数字,能不能想办法去掉呢?

[解决办法]

SQL code
select *,PRI=0 from t where state='wait'union allselect *,PRI=1 from t where state='ok'order by pri--或者select * from t order by case when state='wait' then 0 when state='ok' then 1 else 2 end 

热点排行