postgres group_concat mysql group-concat

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)