我认为这是不可能的,但发现了一个博客条目在这里 http://www.handgestrickt.biz/item/21/这似乎做你所追求的事情:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
会给出不同的结果
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");
FIND_IN_SET http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set
返回的位置id
在给定的第二个参数中,因此对于上面的第一种情况,id
7 位于集合中的位置 1,2 位于 2 等等 - mysql 内部计算出类似的结果
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
然后按结果排序FIND_IN_SET
.