En MariaDB, podemos usar el GROUP_CONCAT()
para devolver los resultados de nuestra consulta como una lista separada por comas. Con eso quiero decir, para una columna dada, podemos convertir todas las filas en una sola fila que contiene una lista separada por comas de los valores que componen esa columna. Cada fila es un elemento separado en la lista.
Ejemplo
Supongamos que ejecutamos la siguiente consulta:
SELECT meal
FROM guest_meals;
Resultado:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Esa consulta resultó en seis filas.
Podemos convertir esas filas en una fila separada por comas como esta:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Resultado:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Cambiar el delimitador
Podemos especificar nuestro propio separador pasándolo a la función, con el prefijo SEPARATOR
palabra clave:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Resultado:
Salad + Fish + Burrito + Pasta + Salad + Salad
Ordenar los resultados
Podemos ordenar los resultados usando un ORDER BY
cláusula en la función:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta,Salad,Salad,Salad
Devolver solo valores únicos
Podemos usar un DISTINCT
cláusula para devolver solo valores únicos:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta,Salad
Limitar los resultados
Podemos usar un LIMIT
cláusula para limitar el número de elementos en la lista:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Resultado:
Burrito,Fish,Pasta
Consultas agrupadas
El GROUP_CONCAT()
La función puede ser útil cuando se ejecutan consultas agrupadas. Ver MariaDB GROUP_CONCAT()
para un ejemplo.