按集合中的值序列排序

时间:2015-01-22 09:26:51

标签: mysql find-in-set

如何在集合中按序列排序的连接名称(这是一个变量,我将这些逗号分隔为这样的" 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

1 个答案:

答案 0 :(得分:2)

您可以在order by函数中使用group_concat按照find_in_set中{id}的相同顺序对名称进行排序,find_in_set返回匹配值的索引,例如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