You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询需求:统计各相册图片数并获取封面图片ID

解决相册图片统计与封面ID查询问题

嘿,我来帮你搞定这个SQL查询的问题!首先得说说你原来的查询语句为啥达不到预期效果:你把albumName和pictureId一起放到GROUP BY里了,这会让每一张图片都单独成为一个分组,所以统计出来的picsInAlbum其实都是1,而且根本没法聚合出每个相册的封面ID。

针对你的需求,我给你两种可行的解决方案:

方法一:使用条件聚合(推荐,更简洁)

这种方法只需要一次查询,通过CASE语句筛选出封面ID,再结合分组统计数量:

SELECT 
    albumName AS ALBUM,
    COUNT(*) AS PICSINALBUM,
    MAX(CASE WHEN isCover = true THEN id END) AS coverPicId
FROM PICTURES
GROUP BY albumName;

逻辑解释:

  • GROUP BY albumName:按相册名称分组,确保每个相册只出一条结果
  • COUNT(*):统计每个分组里的总图片数量
  • MAX(CASE WHEN isCover = true THEN id END):因为每个相册只有一张封面(从你的示例数据来看),CASE语句会只提取封面图片的ID,MAX(或者用MIN也可以)会把这个唯一的ID保留下来

方法二:子查询关联

如果你更习惯用关联查询的方式,也可以先统计每个相册的图片数量,再关联到封面图片的记录:

SELECT 
    cnt.albumName AS ALBUM,
    cnt.PICSINALBUM,
    cover.id AS coverPicId
FROM (
    -- 先统计每个相册的图片总数
    SELECT albumName, COUNT(*) AS PICSINALBUM
    FROM PICTURES
    GROUP BY albumName
) cnt
-- 关联到对应相册的封面图片
JOIN PICTURES cover ON cnt.albumName = cover.albumName AND cover.isCover = true;

把这两种SQL放到你的数据库里运行,都会得到你期望的结果:

ALBUMPICSINALBUMcoverPicId
test21
test123
test225

内容的提问来源于stack exchange,提问作者Hajrudin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:19:22