gpt4 book ai didi

MySQL - 计算记录并按受欢迎程度的顺序显示计数

转载 作者:行者123 更新时间:2023-11-29 14:15:00 25 4
gpt4 key购买 nike

每次有人访问我网站上的博客文章时,我都会将其记录在表 [blog_article_hits] 中。每次访问都有一行。我现在想要显示过去 14 天内的热门文章列表,显示文章标题及其收到的点击量或百分比。

示例:

This is a blog article        1,0732
This is another article 930

我的尝试:

SELECT
tre.article_id, COUNT(*) AS total_hits, art.title, art.description,
pho.photo_id
FROM blog_article_stats tre
LEFT JOIN blog_articles AS art ON tre.article_id = art.article_id
LEFT JOIN blog_photos AS pho ON art.article_id = pho.article_id
WHERE tre.d_time BETWEEN DATE_SUB(Now(), INTERVAL 14 DAY) AND Now()
AND pho.status = 'Published' AND art.status = 'Published'
GROUP BY tre.article_id
ORDER BY total_hits DESC LIMIT 5

非常接近,但不太正确。最受欢迎的文章按正确的顺序列出,但每个标题旁边的计数不正确。它实际上显示的是每篇文章有多少张照片,而不是它被访问了多少次。我认为使用 GROUP BY 会有所帮助,我什至尝试在 [pho.article_id] 上添加辅助 GROUP 子句,但这没有帮助。

我选择 [pho.photo_id] 并加入 [pho.blog_photos],纯粹是因为我想在每个列出的结果旁边显示一张照片。

有人可以告诉我如何解决这个问题吗?

非常感谢广告。

最佳答案

将计数更改为:

COUNT(DISTINCT tre.PK) AS total_hits

其中 PK 是该表的主键。

关于MySQL - 计算记录并按受欢迎程度的顺序显示计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com