postgres - mysql group_concat separator
¿Cómo evitar que GROUP_CONCAT cree un resultado cuando no hay datos de entrada presentes? (2)
Añadir grupo por show
. id
, entonces el resultado será correcto para las tablas vacías:
crear tabla vacía (id int, nombre varchar (20));
select id, group_concat(name) from emptyt
resultado:
NULL, NULL
consulta con grupo por
select id, group_concat(name) from emptyt
group by Id
resultado:
conjunto de datos vacío
Dada la siguiente consulta de MySQL:
SELECT
`show`.`id`
, GROUP_CONCAT( `showClips`.`clipId` ORDER BY `position` ASC ) AS ''playlist''
FROM
`show`
INNER JOIN
`showClips`
ON
( `show`.`id` = `showClips`.`showId` )
;
Quiero recuperar una lista de todos los "shows" de la base de datos, incluidos los identificadores de los "clips" contenidos.
Esto funciona bien, siempre que haya entradas en la tabla de show
. Para este problema, asumamos que todas las tablas están completamente vacías.
GROUP_CONCAT
devolverá NULL
y, por lo tanto, GROUP_CONCAT
una fila en el resultado (que contiene solo valores NULL
).
Mi aplicación entonces pensará que existe un resultado / resultado. Pero ese resultado será inválido. Por supuesto, esto puede comprobarse, pero creo que esto podría (y debería) evitarse en la consulta ya.
Simplemente debes agregar un GROUP BY
al final.
Caso de prueba:
CREATE TABLE `show` (id int);
CREATE TABLE `showClips` (clipId int, showId int, position int);
SELECT
`show`.`id`,
GROUP_CONCAT( `showClips`.`clipId` ORDER BY `position` ASC ) AS ''playlist''
FROM `show`
INNER JOIN `showClips` ON ( `show`.`id` = `showClips`.`showId` )
GROUP BY `show`.`id`;
Empty set (0.00 sec)