这是参考Ayman Hourieh
给出的答案问题: MySQL - ORDER BY values within IN()
SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
FIELD函数返回剩余字符串列表中第一个字符串的位置。
因为ORDER BY 4
函数返回位置,所以会像... ORDER BY 1
或FIELD
。请解释ORDER BY
在这种情况下如何运作。
答案 0 :(得分:1)
对于每一行,FIELD()
返回一个整数值。
然后按此值排序行。
将FIELD()
子句添加到选择部分应该可以帮助您了解它的工作原理:
SELECT id, name, FIELD(name, 'B', 'A', 'D', 'E', 'C')
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
示例结果集:
4 | Z | 0
12 | B | 1
1 | B | 1
6 | A | 2
3 | E | 4