以预定义的顺序返回查询结果

问题描述

我不认为这是可能的,但是在这里找到了一个博客条目,似乎可以满足您的需求:

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给定第二个参数的位置,因此对于上面的第一种情况,id7的位置在集合中的位置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)