MySQL: classifique os valores GROUP_CONCAT


182

Em resumo: existe alguma maneira de classificar os valores em uma instrução GROUP_CONCAT?

Inquerir:

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

Eu recebo esta linha:

Artesanato »Marcenaria

Administração »Organização

Eu quero assim:

Administração »Organização

Artesanato »Marcenaria


Respostas:


389

Claro, consulte 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;

O seu código é muito utilizado para a sua resposta específica e, portanto, não deve ser colocado em nenhum lugar além da sua postagem original. Se você colocá-lo aqui neste comentário, muitos programadores aqui não vai vê-lo, e você não vai obter a melhor resposta possível :)
Sampson

Triste mas verdadeiro. :) Esse código é suficiente ou devo escrever a consulta inteira?
Ivar

Você tentou ASC em vez de DESC?
Sampson

Eu não usei nenhum deles (ASC = padrão).
Ivar

10
Eu não sabia que você poderia order byem group_concataté um momento exato. Resolve um problema que eu estava tendo. Obrigado!
DiMono 28/07

22

Você quer pedir?

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;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.