我有两条新闻和评论:
新闻: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 |
答案 0 :(得分:1)
您需要join
,group by
,order by
和limit
:
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