问题描述
我不认为这是可能的,但是在这里找到了一个博客条目,似乎可以满足您的需求:
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
。
解决方法
是否可以以SELECT
预定顺序进行声明,即 选择ID 7,2,5,9和8 并以该顺序返回它们 ,仅基于ID字段?
这两个语句以相同顺序返回它们:
SELECT id FROM table WHERE id in (7,9,8)
SELECT id FROM table WHERE id in (8,7)