读书人

非常棘手的order by 有关问题

发布时间: 2012-03-27 13:44:24 作者: rapoo

非常棘手的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 行)

读书人网 >SQL Server

热点推荐