在mysql中列出10个最大注释消息

时间:2013-04-07 05:38:54

标签: mysql sql select

我有两条新闻和评论:

新闻:newsId,newsTitle,newsDate,newsReadCount

评论:ID,newsID,comment,ndate

我根据两个日期之间的值newsReadCount选择了10行最大读取次数:

SELECT * FROM news WHERE DATE(newsDate) BETWEEN '20120414' AND '20130414' ORDER BY newsReadCount DESC LIMIT 0, 10

在这里,我想用newsTitle选择10个新闻,从两个日期之间的新闻表中选择总评论数,这些日期根据评论表的关系newsID有最大评论。我如何在mysql中查询?我需要加入吗?请帮帮我,我是mysql的新手。

评论表的newsID是新闻表的新闻ID主键的值。

编辑:

在两个日期之间选择具有以下结果的新闻

结果:

| newsTitle  | Total Comments |     
-------------------------------    
| onenews    |  25            |    
| another    |  30            |

2 个答案:

答案 0 :(得分:1)

您需要joingroup byorder bylimit

SELECT
    news.newsTitle, COUNT(comments.ID) AS `Total Comments`
FROM news INNER JOIN comments ON
    news.newsId = comments.newsID AND news.newsDate BETWEEN '20120414' AND '20130414'
GROUP BY news.newsId
ORDER BY `Total Comments` DESC
LIMIT 10;

请参阅sql fiddle

答案 1 :(得分:0)

我认为你可以使用

SELECT n.newsTitle, count(c.ID) as totalCount
FROM   News n LEFT JOIN Comments c ON n.newsId = c.newsID
WHERE  DATE(n.newsDate) BETWEEN '20120414' AND '20130414'
GROUP BY n.newsTitle
ORDER BY totalCount DESC
LIMIT   10