这个非常简单的查询:
SELECT * FROM table WHERE widget_id IN (10212, 10217, 10218, 10215, 10213);
已决定按数字顺序输出记录...
10212
10213
10215
10217
10218
当我期望并要求它按照我在 IN 子句中包含的顺序输出记录时。
就好像我附加了 ORDER BY widget_id
- 而我故意没有附加。
有人可以向这位 SQL 新手解释一下为什么会发生这种情况以及如何让它按照我的方式进行吗?
最佳答案
您正在寻找field
函数:
select *
from table
where widget_id in (10212, 10217, 10218, 10215, 10213)
order by field(widget_id, 10212, 10217, 10218, 10215, 10213);
该函数返回给定列表中所选列中的值的位置,我们可以使用它对结果集进行排序。
关于mysql - 为什么这个简单的 MySQL 查询排序为 "by itself",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43850634/