3

这是参考Ayman Hourieh给出的答案

问题: MySQL - IN() 中的 ORDER BY 值

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 1FIELDORDER BY

4

1 回答 1

2

对于每一行,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
于 2013-10-30T12:54:30.610 回答