文章评论数 mysql_sql语句按评论数排序

本文分享了一种使用 MySQL SQL 查询来获取文章列表并按评论数进行排序的方法,包括左连接操作以确保包含无评论的文章,以及在不同条件下的排序规则。还提到了两种实现思路,一是通过在文章表中增加评论数字段,二是直接查询评论表获取评论最多的文章ID。
摘要由CSDN通过智能技术生成

先呈上我自己修改的sql语句

$sql = "select a.*,aa.id,count(aa.id) as countNum,c.catName,s.staffName

from __PREFIX__articles a left join __PREFIX__article_appraises aa on a.articleId=aa.articleId,__PREFIX__article_cats c,__PREFIX__staffs s

where a.articleFlag=1 and a.catId=c.catId and a.staffId = s.staffId GROUP BY a.articleId ";

if($catId>0){

$sql .= " and a.catId=$catId";

}

if(I('articleTitle')!='')$sql.=" and articleTitle like '%".$articleTitle."%'";

$sql.=' order by';

if($good>0){

$sql .= " good desc,";

}

if($bad>0){

$sql .= " bad desc,";

}

if($appraise>0){

$sql .= " countNum desc,";//根据评论数排序

}

$sql.=' articleId desc';

下面是网上的知识点:

SELECT

posts.id,

posts.content,

comments.id AS comment_id,

comments.body,

count(comments.id)

FROM posts

LEFT JOIN comments --左连接,保证左表posts中没有评论的文章也显示出来

ON posts.id = comments.post_id

GROUP BY posts.id --分组,配合count(comments.id)统计到每篇文章的评论数

ORDER BY count(comments.id) DESC, posts.id DESC --按评论数排序,相同则按文章ID排序

LIMIT 2 OFFSET (3-1)*2 --分页,2表示每页显示的文章数量,3表示第3页

下面是知识点二

1,在文章表里面加个字段叫评论数,然后每次有这篇文章新的评论就同时把它加1,然后根据这个字段排序即可

2,如果只拿文章ID的排序,可以在评论表里面这样做:

select post_id from comment group by post_id order by count(1) desc limit 0, 10;

其中post_id是文章ID,comment是评论表,这个语句拿到评论数最多的前10篇文章ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值