【问题标题】:MySQL: Sort GROUP_CONCAT valuesMySQL:对 GROUP_CONCAT 值进行排序
【发布时间】:2010-11-02 23:33:30
【问题描述】:

简而言之:有没有办法对 GROUP_CONCAT 语句中的值进行排序?

查询:

GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") 
FROM test_competence AS node, test_competence AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 
  AND node.id = l.competence 
  AND parent.id != 1 
ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences

我得到了这一行:

工艺品 » 细木工

管理 » 组织

我想要这样:

管理 » 组织

工艺品 » 细木工

【问题讨论】:

标签: mysql sorting sql-order-by group-concat


【解决方案1】:

当然,见http://dev.mysql.com/doc/refman/...tions.html#function_group-concat:

SELECT student_name,
  GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
  FROM student
  GROUP BY student_name;

【讨论】:

  • 您的代码在很大程度上依赖于您的具体答案,因此不应放置在原始帖子之外的任何地方。如果你把它放在这个评论里,这里的很多程序员都看不到它,你也不会得到最好的回应:)
  • 悲伤但真实。 :) 这段代码够用还是我应该编写整个查询?
  • 你试过用 ASC 代替 DESC 吗?
  • 我没有使用其中任何一个(ASC = 默认)。
  • 直到此刻,我才知道您可以在 group_concat 中使用 order by。解决了我遇到的一个问题。谢谢!
【解决方案2】:

您的意思是按顺序订购吗?

SELECT _key,            
COUNT(*) as cnt,            
GROUP_CONCAT(_value ORDER BY _value SEPARATOR ', ') as value_list      
FROM group_concat_test      
GROUP BY _key      
ORDER BY _key;

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2023-03-08
    • 2015-09-26
    • 1970-01-01
    • 2015-05-11
    • 2012-07-12
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多