MySQL – IND中的ORDER BY值

嘿 – 我希望按照它们输入IN()函数的顺序对下面查询中返回的项进行排序。

输入:

SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');

输出:

|   id   |   name  |
^--------^---------^
|   5    |   B     |
|   6    |   B     |
|   1    |   D     |
|   15   |   E     |
|   17   |   E     |
|   9    |   C     |
|   18   |   C     |

有任何想法吗?提前致谢!

最佳答案
SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')

FIELD函数返回剩余字符串列表中第一个字符串的位置。

但是,具有表示排序顺序的索引列,然后按此列排序是更好的性能。

转载注明原文:MySQL – IND中的ORDER BY值 - 代码日志