in只会去看记录在不在里面,不会去管in里面的顺序,所以说,换个想法吧,你在in里面写好顺序也没用。
所以只要求助于order了,格式为:
SELECT * FROM tb WHERE id IN (3,4,1,5) ORDER BY CHARINDEX(',' + RTRIM(id) + ',' , ',' + '3,4,1,5' + ',')
select * from Product where ID in(12490,12494,12486) order by CHARINDEX(','+CONVERT(varchar(10),ID)+',',',12490,12494,12486,')
实现原理
把ID转成字符串,然后在两边加上",",组合一个字符串,用逗号隔开每个ID,然后查询ID的下标值(之所以两边加上","是因为查询下标的时候类似ID=123和ID=1234会查到同一个下标)