如何让SQL查询返回无评论文章的0计数?技术求助
问题分析及解决办法
你的查询之所以漏了无评论的文章,核心问题是你只从Comments表取数据——没有评论的文章在Comments表里根本没有对应的记录,不管怎么用COALESCE或者COUNT,都没法凭空把这些文章找出来。
要解决这个问题,你需要以**文章表(假设表名叫Articles,主键是articleID)**为主表,用LEFT JOIN关联Comments表,这样所有文章都会被保留,哪怕它没有评论。具体写法如下:
SELECT a.articleID, COUNT(c.commentID) AS coms FROM Articles a LEFT JOIN Comments c ON a.articleID = c.articleID GROUP BY a.articleID ORDER BY a.articleID DESC;
补充说明:
LEFT JOIN会保留左表(Articles)的所有行,右表(Comments)没有匹配的话,对应字段会是NULLCOUNT(c.commentID)会自动忽略NULL值,所以无评论的文章会得到0,不需要额外用COALESCE(如果要写也可以,比如COALESCE(COUNT(c.commentID), 0),但实际效果一致)- 如果你的
commentID是唯一主键,用COUNT(c.commentID)和COUNT(DISTINCT c.commentID)结果一致,后者适合存在重复评论ID的场景
内容的提问来源于stack exchange,提问作者leroy_sinclair
相关产品推荐
相关产品推荐

