No MariaDB, podemos usar o
GROUP_CONCAT()
função para retornar nossos resultados de consulta como uma lista separada por vírgulas. Com isso quero dizer, para uma determinada coluna, podemos converter todas as linhas em uma única linha que contém uma lista separada por vírgulas dos valores que compunham essa coluna. Cada linha é um item separado na lista. Exemplo
Suponha que executemos a seguinte consulta:
SELECT meal
FROM guest_meals;
Resultado:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Essa consulta resultou em seis linhas.
Podemos converter essas linhas em uma linha separada por vírgulas assim:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Resultado:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Alterar o delimitador
Podemos especificar nosso próprio separador passando-o para a função, prefixado com o
SEPARATOR
palavra-chave:SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Resultado:
Salad + Fish + Burrito + Pasta + Salad + Salad
Ordenando os resultados
Podemos ordenar os resultados usando um
ORDER BY
cláusula na função:SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta,Salad,Salad,Salad
Retornar apenas valores exclusivos
Podemos usar um
DISTINCT
cláusula para retornar apenas valores exclusivos:SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta,Salad
Limitar os resultados
Podemos usar um
LIMIT
cláusula para limitar o número de itens na lista:SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta
Consultas agrupadas
O
GROUP_CONCAT()
pode ser útil ao executar consultas agrupadas. Veja MariaDB GROUP_CONCAT()
Por exemplo.