按集合中的值序列排序

Order by sequence of values in set

我怎样才能将名称按其在集合中的顺序排序(它是一个变量,其中我用逗号分隔 ID,如“4,3,2”)?到目前为止,名称是按 id“2,3,4”排序的。这是我的子查询。

SELECT GROUP_CONCAT(t.name SEPARATOR ',') FROM table t WHERE find_in_set(t.id, "4,3,2") > 0

您可以在 group_concat 函数中使用 order by 对名称进行排序,与在 find_in_setfind_in_set returns 索引中的 ID 的顺序相同像 id => 4 索引这样的匹配值将是一个 id=> 3 索引将是 2 所以你可以使用 find_in_set

的结果来排序你的结果
SELECT 
GROUP_CONCAT(t.name ORDER BY FIND_IN_SET(id, "4,3,2") SEPARATOR ',' )
FROM t 
WHERE FIND_IN_SET(t.id, "4,3,2") > 0

DEMO