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

kar*_*ila 15 mysql sql-order-by

是否可以使用预定的顺序执行SELECT语句,即.选择ID 7,2,5,9和8 并按顺序返回它们,仅基于ID字段?

语句SELECT id FROM表WHERE id in(7,2,5,9,8); 和SELECT id FROM表WHERE id in(8,2,5,9,7); 两者都以相同的顺序返回它们.

Con*_*oyP 36

我不认为这是可能的,但在这里找到了一个博客条目,似乎做了你想要的事情类型:

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
Run Code Online (Sandbox Code Playgroud)

会给出不同的结果

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");
Run Code Online (Sandbox Code Playgroud)

FIND_IN_SET返回id给定的第二个参数中的位置,因此对于上面的第一种情况,id7位于集合中的位置1,2位于2,依此类推 - mysql内部计算出类似的内容

id | FIND_IN_SET
---|-----------
7  | 1
2  | 2
5  | 3
Run Code Online (Sandbox Code Playgroud)

然后由结果命令FIND_IN_SET.