给定以下MySQL查询:
SELECT
`show`.`id`
, GROUP_CONCAT( `showClips`.`clipId` ORDER BY `position` ASC ) AS 'playlist'
FROM
`show`
INNER JOIN
`showClips`
ON
( `show`.`id` = `showClips`.`showId` )
;
我想从数据库中检索所有“节目”的列表,包括包含的“片段”的ID。
只要
show
表中有条目,此方法就可以正常工作。对于此问题,我们假设所有表都完全为空。GROUP_CONCAT
将返回NULL
,因此将一行强制插入结果(仅包含NULL
值)。然后,我的应用程序将认为存在一个显示/结果。但是那个结果将是无效的。当然可以对此进行检查,但是我觉得可以(并且应该)在查询中已经避免这种情况。
最佳答案
您只需在末尾添加GROUP BY
。
测试用例:
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)