select * from Users  
order by 
case when userID='xxxxxx' then Orders+1 else orders end desc , UpToffTime desc 

解决方案 »

  1.   

    这个意思吗?
    declare @t 
    table(ToffID int identity(1,1),UserId varchar(5),UserName varchar(5),Orders int,UpToffTime  datetime)insert @t select 1,'1',1,getdate()
    insert @t select 2,'2',2,getdate()
    insert @t select 3,'3',3,getdate()
    insert @t select 4,'4',4,getdate()
    select * from @t--把2降到4名
    update @t set orders = -1 where userid = 2
    update @t set orders = orders - 1
    where orders between 3 and 4
    update @t set orders = 4 where userid = 2select * from @t order by orders
    /*
    ToffID      UserId UserName Orders      UpToffTime                                             
    ----------- ------ -------- ----------- ------------------------------------------------------ 
    1           1      1        1           2008-03-24 18:14:21.940
    2           2      2        2           2008-03-24 18:14:21.940
    3           3      3        3           2008-03-24 18:14:21.940
    4           4      4        4           2008-03-24 18:14:21.940(所影响的行数为 4 行)
    (所影响的行数为 1 行)
    (所影响的行数为 2 行)
    (所影响的行数为 1 行)ToffID      UserId UserName Orders      UpToffTime                                             
    ----------- ------ -------- ----------- ------------------------------------------------------ 
    1           1      1        1           2008-03-24 18:14:21.940
    3           3      3        2           2008-03-24 18:14:21.940
    4           4      4        3           2008-03-24 18:14:21.940
    2           2      2        4           2008-03-24 18:14:21.940(所影响的行数为 4 行)
    */