如何获取点赞量最高图片的PID?现有尝试仅返回点赞数
获取点赞量最高图片的PID解决方案
嘿,我来帮你搞定这个问题!结合你提到的mini instadb的likes表(推测表结构是每条记录对应一个用户对某张图片的点赞,包含pid字段存储图片ID),你之前只拿到点赞数没拿到PID,是因为没把图片ID和统计的点赞数关联起来筛选。
这里给你两种实用的SQL写法:
方法1:获取单张点赞最高的图片(若有并列最高,仅返回第一条)
适合只需要任意一张点赞数最高图片的场景,通过GROUP BY统计每个图片的点赞数,按点赞数倒序排序后取第一条:
SELECT pid, COUNT(*) AS total_likes FROM likes GROUP BY pid ORDER BY total_likes DESC LIMIT 1;
方法2:获取所有点赞数并列最高的图片
如果存在多张图片点赞数相同且都是最高值,用这种写法可以把它们全部查出来:
SELECT pid, COUNT(*) AS total_likes FROM likes GROUP BY pid HAVING COUNT(*) = ( -- 子查询先计算出所有图片中的最高点赞数 SELECT MAX(like_count) FROM ( SELECT COUNT(*) AS like_count FROM likes GROUP BY pid ) AS temp_counts );
为啥之前只拿到点赞数?
大概率是你之前的查询只计算了最高点赞数的数值,没关联对应的pid。比如如果只写SELECT MAX(like_count) FROM (SELECT COUNT(*) AS like_count FROM likes GROUP BY pid) AS temp,就只能得到最高点赞数,而拿不到对应的图片ID。上面两种写法都把pid和统计的点赞数绑定在一起,就能得到你需要的PID啦。
内容的提问来源于stack exchange,提问作者Avinash Ubale
相关产品推荐
相关产品推荐

