我有3张桌子:
-categories(-categories not important)
-articles
-comments
示例:
-articles 我有10000多篇文章
-comments 我对随机-articles有超过10000条评论
- 我试图显示“最后5条评论”
OF articles.article_id s = in(1,2,3,4,5)
使用订购comments.comment_id desc
WITH categories.category_id,categories.category_name
-SQL-QUERY-1:
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_id
和article_id
列
如你所见;
109
108
107
106
105
comments.article_id s +确定
1 - 2 - 3 - 4 - 5
但结果列表显示每篇文章的** 2条评论 **
- 我需要“分组”文章.article_id s
所以我通过comments.article_id“
添加”组-SQL-QUERY-2:
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_id
和article_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个小时)
- 我需要在每个类别列表页面中显示:“ last(desc)5条评论”。
- 我需要显示:“最后(desc)”1“评论(1,2,3,4,5 article_id s)中的每篇文章”
(distinct和max显示相同的结果108 106 104 102 100
如果我添加group by comments.article_id
并删除order by comments.comment_id desc
,则该列表会显示文章的第1条评论 - 我需要显示文章的最后一条评论
任何sql专家都可以帮我解决这个SQL查询吗?
答案 0 :(得分:0)
这有用吗......
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;
答案 1 :(得分:0)
假设您要显示5篇特定文章的最后5条评论,每篇文章一条评论:
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