use*_*096 4 mysql inner-join subquery
我有一个文章表,其中包含每天的文章视图数量.创建新记录以保存每篇文章的每个单独日期的计数.
以下查询获取所有时间前5个已查看文章ID的文章ID和总观看次数:
SELECT article_id,
SUM(article_count) as cnt
FROM article_views
GROUP BY article_id
ORDER BY cnt DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
我还有一个单独的文章表,其中包含所有文章字段.我想修改上面的查询以加入文章表并为每个文章ID获取两个字段.我试图在下面这样做,但计数回复不正确:
SELECT article_views.article_id, SUM( article_views.article_count ) AS cnt, articles.article_title, articles.artcile_url
FROM article_views
INNER JOIN articles ON articles.article_id = article_views.article_id
GROUP BY article_views.article_id
ORDER BY cnt DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么.我需要做一个子查询吗?
Mah*_*mal 10
添加articles.article_title, articles.artcile_url到GROUP BY条款:
SELECT
article_views.article_id,
articles.article_title,
articles.artcile_url,
SUM( article_views.article_count ) AS cnt
FROM article_views
INNER JOIN articles ON articles.article_id = article_views.article_id
GROUP BY article_views.article_id,
articles.article_title,
articles.artcile_url
ORDER BY cnt DESC
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
您没有得到正确结果集的原因是,当您选择未包含GROUP BY在该SELECT子句中的聚合函数中的行时,MySQL会获取随机值.
| 归档时间: |
|
| 查看次数: |
21736 次 |
| 最近记录: |