【发布时间】:2013-10-27 15:43:25
【问题描述】:
首先,我不擅长sql,所以要温柔;)
所以我有两张桌子:
查看:
- id_view
- 日期
- ip
- id_article
文章
- id_article
- id_user
- 日期
- ...和其他东西...
我想要的是获取3篇浏览量较多的文章的数量和详细信息。
我尝试过但没有成功的语句如下:
SELECT COUNT(DISTINCT view.id_article)
, view.id_article
, article.date category_name
FROM view , article
WHERE view.id_article=article.id_article
AND article.date="2013-10-18"
GROUP BY id_article LIMIT 3
但我没有得到我真正想要的结果,因为它只显示了该日期一篇文章的结果。也就是说,我知道文章 1 在那天有 1 次浏览,但我还有另一篇文章在那天有浏览次数。
我真的认为这很简单,但我可以自己解决......:/
提前致谢。
编辑:
找到答案:
SELECT COUNT(view.id_article), view.id_article
FROM view , article
WHERE view.id_article = article.id_article
AND view.date = "2013-10-18"
GROUP BY id_article
LIMIT 3
【问题讨论】:
-
必须澄清...您是否正在寻找所有具有 3 次或更多浏览量的文章?还是只有 3 篇浏览量最高的文章?这个查询实际上会在除 MySQL 之外的任何数据库上失败(返回错误),您的 group by 并不完全正确......mysql 更喜欢在返回错误之前悄悄地返回“不正确”的结果
-
3 篇文章在特定日期获得更多浏览量。我知道“分组依据”是不正确的,但我不知道如何使它变得好大声笑
-
哦,所以在示例中,您想要 3 篇文章在 2013-10-18 的浏览量比其他任何一天都多?
-
文章 1 在第 18 天获得了 1 次浏览,在第 19 天获得了 2 次浏览。文章 2 在第 18 天获得了 2 次浏览,在第 19 天获得了 4 次浏览。如果我搜索第 18 天浏览次数最多的文章,我将得到这两个,因为其他人没有得到任何意见。第 19 天也是如此。
-
您的回答似乎与您给我的要求不符,它只会给您当天随机查看的三篇文章……除非您要求。扩展您的测试集以包含 3 条以上的记录,您就会明白我的意思了。
标签: mysql sql count group-by distinct