SELECT * From Admin WHERE ID in (3,4,10,6)
结果的排序是按从小到的顺序排列的,如下:Id          Title
----------- ---------------
3           LFan
4           ZXin
6           YSXun
10          WWhua
可是我想要的排序应该还是按照(3,4,10,6)这样的顺序排列怎么写查询语句呀?注(3,4,10,6)是会变动的!
想要的效果:Id          Title
----------- ---------------
3           LFan
4           ZXin
10          WWhua
6           YSXun

解决方案 »

  1.   

    晕,找到答案了。跟大家分享一下吧。
    SELECT * From Admin WHERE ID in (3,4,10,6) order by charindex(cast(id as varchar),'3,4,10,6')
      

  2.   

    declare @id varchar(50)
    set @id='3,4,10,6'
    SELECT * From Admin 
    WHERE charindex(','+ltrim(id)+',',','+@id+',')>0
    order by charindex(','+ltrim(id)+',',','+@id+',')>0
      

  3.   


    试试这个SELECT * From Admin WHERE ID in (3,4,10,6)
    order by (case when 3 then 1 when 4 then 2 when 10 then 3 when 6 then 4 end)
      

  4.   

    --如果是3,4,10,6
    SELECT * From Admin WHERE ID in (3,4,10,6) order by case id when 3 then 1 when 4 then 2 when 10 then 3 when 6 then 4 end--如果不定,就只有加个表来记录了.
    例如TB
    PX ID
    1  3
    2  4
    3  10 
    4  6select m.* from admin m, tb n where m.id = n.id order by n.px
      

  5.   

    是不是charindex(cast(id as varchar),'3,4,10,6') 在查询的时候会作为查询结果的一个隐藏列,
    最后根据这个列来排序???????????
      

  6.   

    如果是这样子,那方法就很多了,只要能保证后面ORDER BY 隐藏列是按查询时的顺序就可以了
    又学到了知识.....
      

  7.   

    declare @id varchar(50)
    set @id='3,4,10,6'
    SELECT * From Admin 
    WHERE charindex(','+ltrim(id)+',',','+@id+',')>0
    order by charindex(','+ltrim(id)+',',','+@id+',')这样不行吗搂主?
      

  8.   


    不好意思,我是在ASP中使用,没有写存储过程。我只能保证下面代码能在ASP中正常运行。
    Sql_A="SELECT ID,NickName,Tel,RoleTitle From View_AdminInfo WHERE ID in ("&Rs("UserId")&") Order By charindex(cast(id as varchar),'"&Rs("UserId")&"')"
      

  9.   

    9楼的疯子正解
    看下我的blog
    http://blog.csdn.net/ws_hgo/archive/2009/02/06/3866925.aspx
    --(1)借用字符串进行无规律排序   
    create table #DepartMent   
    (   
     Depart varchar(10)   
    )   
    insert into #DepartMent select '组长'  
    union all select '助理'  
    union all select '总经理'  
    union all select '员工'  
    union all select '副总经理'  
    union all select '主管'  
    declare @sql varchar(100)   
    set @sql=N'总经理,副总经理,主管,组长,助理,员工'  
      
    select * from #DepartMent   
    order by charindex(N','+Depart+N',',N','+@sql+N',')
      

  10.   

    order by 1,2,3,4,5 ok??