在一个数据表里面,有一个状态标识字段,值分别为0,1,2,我要基于这个字段来排序查询,如果我用order by的话,就只能得到0,1,2或者2,1,0这样的顺序,而我要得到的是0,2,1或者2,0,1,也就是要把状态标识为1的数据防在后面,我该怎么做呢?

解决方案 »

  1.   

    declare @t table(s int)
    insert @t select 0
    union all select 1
    union all select 2select * from @t order by charindex(rtrim(s),'102')
      

  2.   

    0,2,1
    SELECT 字段 FROM 表 ORDER BY CASE 状态标识字段 WHEN 0 THEN 0 WHEN 2 THEN 1 WHEN 1 THEN 2 END
    2,0,1
    SELECT 字段 FROM 表 ORDER BY CASE 状态标识字段 WHEN 2 THEN 0 WHEN 0 THEN 1 WHEN 1 THEN 2 END
      

  3.   

    declare @t table(s int)
    insert @t select 0
    union all select 1
    union all select 2select * from @t where s <> 1
    union all
    select * from @t where s = 1