【发布时间】:2013-11-10 01:12:39
【问题描述】:
这是参考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 在这种情况下是如何工作的。
【问题讨论】:
-
首先 - 请解释一下你想要什么
-
name是您要订购结果的字段名称。另一个是结果索引,你想要的顺序索引。 -
“FIELD 函数返回第一个字符串在剩余字符串列表中的位置”——这是错误的。 FIELD 函数返回其非第一个参数的索引,该值与其第一个参数的值匹配。例如
select FIELD('B', 'B', 'A', 'D', 'E', 'C')将输出1,select FIELD('A', 'B', 'A', 'D', 'E', 'C')将输出2等等。因此,您可以按 FIELD 返回的整数索引进行排序。
标签: mysql sql-order-by