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(...) ←括号里的顺序进行排序。
简单的说就是如何是排序按照WHERE ID in(...) ←括号里的顺序进行排序。
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
ORDER BY charindex(','+cast(ID as varchar(10))+',',',9,5,3,8,7,2,23,6,') ASC",conn,1,1
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 数据类型的表达式。
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
这样不可以吗?
ORDER BY
1,2,3,4,5 ASC
这个怎么理解啊?
还是不懂,希望高手点拨一下。
我上机试了。正如楼上所说,
(ORDER BY
1,2,3,4,5 ASC)
其实他就是不以前无规律的数列(9,5,3,8,7,2,23,6)
变成有规律的数列1,2,3,4,5
之后对他排序。我是新人,刚刚起步,又学一招