首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用mysql查询x文章的最后5条注释

用mysql查询x文章的最后5条注释
EN

Stack Overflow用户
提问于 2014-03-01 14:50:09
回答 2查看 582关注 0票数 0

我有三张桌子:

-categories (-categories不重要)

-articles

-comments

示例:

-articles I‘s 10000+文章

-comments I有随机-articles的10000+注释

-我想给大家看“最后5条评论”(last 5 comments)

articles.article_id s= in(1,2,3,4,5)

使用命令comments.comment_id desc

与categories.category_id,categories.category_name

-SQL-QUERY-1:

代码语言:javascript
复制
select 
comments.comment_id,comments.comment_title,comments.article_id, 
articles.article_id,articles.article_title,articles.category_id, 
categories.category_id,categories.category_name from comments 
left join (articles,categories) on (comments.article_id=articles.article_id and articles.category_id=categories.category_id) 
where (comments.article_id in(1,2,3,4,5)) 
ORDER BY `comments`.`comment_id`  DESC limit 0 , 5

请集中注意comments_idarticle_id

  • sql-1:http://sqlfiddle.com/#!2/3ab6c1/1

如你所见;

  • comments.comment_id desc命令 +OK

109

108

107

106

105

comments.article_id s +OK

1-2-3-4-5

但是结果列表显示了每一篇文章的**2个注释

-I需要“分组”articles.article_id的

所以我添加了“comments.article_id的组”

-SQL-QUERY-2:

代码语言:javascript
复制
select 
comments.comment_id,comments.comment_title,comments.article_id, 
articles.article_id,articles.article_title,articles.category_id, 
categories.category_id,categories.category_name from comments 
left join (articles,categories) on (comments.article_id=articles.article_id and articles.category_id=categories.category_id) 
where (comments.article_id in(1,2,3,4,5)) 
/*for duplicate comments*/ GROUP by comments.article_id /*for duplicate comments*/
ORDER BY `comments`.`comment_id`  DESC limit 0 , 5

请集中注意comments_idarticle_id

-sql-2:http://sqlfiddle.com/#!2/3ab6c1/2

没关系,comments.article_id的分组,但"comments.comment_id desc"顺序被打破;

108

106

104

102

100

(必须是109 106 104 102 100)

我不是mysql的专家(我损失了3-4个小时)

-I需要在每个类别列表页面中显示:"last(desc) 5注释“。

-I需要显示:对于(1,2,3,4,5 article_id )中的每一篇文章,"last(desc)“"1”注释

(distinct和max显示相同的结果108 106 104 102 100

如果我添加group by comments.article_id并删除order by comments.comment_id desc,列表将显示文章的前1条注释--我需要显示文章的最后1条注释)

有任何sql专家可以帮助我进行这个sql查询吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-01 22:39:51

假设您想显示5篇特定文章的最后5条注释,那么每篇文章有一个评论:

代码语言:javascript
复制
select     c.comment_id, c.comment_title, c.article_id, 
           a.article_id, a.article_title, a.category_id, cats.category_name
from       articles      a
inner join categories cats on (a.category_id = cats.category_id)
inner join (select   article_id, max(comment_id) comment_id, comment_title
            from     comments co
            where    co.article_id in (1, 2, 3, 4, 5)
            group by co.article_id) c
            on (a.article_id = c.article_id)
order by    c.comment_id desc

http://sqlfiddle.com/#!2/3ab6c1/27

票数 0
EN

Stack Overflow用户

发布于 2014-03-01 15:18:56

这有帮助吗..。

代码语言:javascript
复制
 SELECT x.*
      , COUNT(*) rank
   FROM comments x
   JOIN comments y 
     ON y.article_id = x.article_id
    AND y.comment_id <= x.comment_id
  GROUP
     BY article_id
      , comment_id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22115823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档