如何在该SQL查询中使用HAVING筛选总点赞数超10的作者
错误原因
你之前的SQL写法有两处核心问题:
- 需求是统计总累计点赞数,需要用
SUM()聚合函数对likes字段求和,你误用了统计行数的COUNT()函数,且函数调用语法错误,需要用括号包裹字段名 HAVING是对分组聚合后的结果做过滤,使用前必须先添加GROUP BY子句,按作者维度对数据分组
正确实现语句
如果需要查询符合条件的作者及对应总点赞数,可直接使用以下语句:
SELECT auteurs.id, auteurs.auteur, SUM(posts.likes) AS total_likes FROM auteurs INNER JOIN posts ON auteurs.id = posts.auteur_id GROUP BY auteurs.id, auteurs.auteur HAVING SUM(posts.likes) > 10
执行后返回的结果为:
| id | auteur | total_likes |
|---|---|---|
| 1 | Mounir Toub | 15 |
| 2 | Miljuschka | 34 |
如果你需要查询符合条件的作者的所有帖子详情,可使用子查询先过滤符合要求的作者,再关联帖子表获取详情:
SELECT a.*, p.* FROM auteurs a INNER JOIN posts p ON a.id = p.auteur_id INNER JOIN ( SELECT auteur_id FROM posts GROUP BY auteur_id HAVING SUM(likes) > 10 ) valid_authors ON a.id = valid_authors.auteur_id
内容的提问来源于stack exchange,提问作者Jean
相关产品推荐
相关产品推荐

