2

我怎样才能在集合中按它们的顺序排列连接的名称(它是一个变量,其中我有 ids 逗号分隔,如“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
4

1 回答 1

2

您可以使用order byingroup_concat函数以与您的 id 相同的顺序对名称进行排序find_in_setfind_in_set返回匹配值的索引,例如 id => 4 索引将为 1 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

于 2015-01-22T09:39:13.730 回答