MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Converter resultados de consulta em uma lista separada por vírgulas no MariaDB


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.