日期:2014-05-18  浏览次数:20450 次

非常棘手的order by 问题
我有一个字段     size,我想   select   *   from   [tablename]   order   by   size,但是我的size是用户输入的。我想根据size排序。比如size=10     我想size=10的记录在最上方,size=9和size=11的在下面。有办法吗。

------解决方案--------------------
select * from [tablename] order by case size when 10 then -9999 end
------解决方案--------------------
select * from [tablename] order by CASE WHEN size=10 THEN 0 ELSE 1 END
------解决方案--------------------
declare @t table(pk int identity(1,1),size int)
insert @t select 9
insert @t select 10
insert @t select 11

select * from @t order by case size when 10 then (select min(size)-1 from @t) else size end
----
pk size
----------- -----------
2 10
1 9
3 11

(所影响的行数为 3 行)