rs.Open"SELECT * FROM Dome WHERE ID in(9,5,3,8,7,2,23,6) ORDER BY ID in(9,5,3,8,7,2,23,6) ASC",conn,1,1如上这种形式,请教正确的排序写法该是怎样的?
简单的说就是如何是排序按照WHERE ID in(...) ←括号里的顺序进行排序。

解决方案 »

  1.   


    SELECT * FROM Dome WHERE ID in(9,5,3,8,7,2,23,6) 
    ORDER BY case ID 
    when 9 then 0 
    when 5 then 1
    when 3 then 2
    when 8 then 3 
    when 7 then 4
    when 2 then 5
    when 23 then 6
    when 6 then 7 end asc
      

  2.   

    rs.Open"SELECT * FROM Dome WHERE ID in(9,5,3,8,7,2,23,6) 
    ORDER BY charindex(','+cast(ID as varchar(10))+',',',9,5,3,8,7,2,23,6,') ASC",conn,1,1
      

  3.   

    SELECT * FROM Dome WHERE ID in(9,5,3,8,7,2,23,6) 
    ORDER BY 
    charindex(','+cast(ID as varchar(10))+',',',9,5,3,8,7,2,23,6,')
     ASC--------------------------
    CHARINDEX ( expression1 , expression2 ) 
     参数
    expression1 
    包含要查找的字符序列的表达式。expression1 参数是 ntext 类型或可隐式转换为 nvarchar 数据类型的表达式。expression2 
    通常用于搜索指定序列的列的表达式。expression2 参数是 ntext 类型或可隐式转换为 nvarchar 数据类型的表达式。
      

  4.   

    楼上钻石的老大,我还不太明白为什么一定要加上 ','+expression1+','    ','+expression2+','
    SELECT * FROM Dome WHERE ID in(9,5,3,8,7,2,23,6) 
    ORDER BY charindex(cast(ID as varchar(10)) ,  '9,5,3,8,7,2,23,6') ASC
    这样不可以吗?
      

  5.   

    那样不是变成了
    ORDER BY 
    1,2,3,4,5 ASC
    这个怎么理解啊?
    还是不懂,希望高手点拨一下。
      

  6.   

    pengdali(璇玑的钻石)的方法的确可行
    我上机试了。正如楼上所说,
    (ORDER BY 
    1,2,3,4,5 ASC)
    其实他就是不以前无规律的数列(9,5,3,8,7,2,23,6)
    变成有规律的数列1,2,3,4,5 
    之后对他排序。我是新人,刚刚起步,又学一招