--> 测试数据: @T
declare @T table (userName varchar(5),address varchar(7),phone int)
insert into @T
select 'name1','hunan',123456 union all
select 'name2','beijin',456456 union all
select 'name3','sichuan',456456select * from @T order by address desc/*
userName address phone
-------- ------- -----------
name3    sichuan 456456
name1    hunan   123456
name2    beijin  456456(3 行受影响)
*/

解决方案 »

  1.   

    ORDER BY CASE userName
                 WHEN 'name3' THEN 1
                 WHEN 'name1' THEN 2
                 WHEN 'name2' THEN 3
                 ELSE 4
             END
      

  2.   

    --> 测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (userName varchar(5),address varchar(7),phone int)
    insert into #T
    select 'name1','hunan',123456 union all
    select 'name2','beijin',456456 union all
    select 'name3','sichuan',456456select * from #T order by charindex(','+userName+',',',name3,name1,name2,')
    /*
    name3 sichuan 456456
    name1 hunan 123456
    name2 beijin 456456
    */
      

  3.   

    如果是按排序號的奇偶數時,要生成identity再排序