php - 如何在 Mysql 和 PHP 中创建 'rising' 或 'What' 的热查询?

标签 php mysql

我正在尝试创建一个过滤器来显示某些被视为“趋势”的记录。因此,我们的想法是选择投票次数最多的记录,但不按投票次数从最多到最少的降序排列。这样用户就可以浏览并有机会看到所有链接,而不仅仅是顶部的链接。你推荐什么是最好的方法?我不知道如何创建随机分类的趋势链接,但是当用户从一个页面转到另一个页面时不让它们重复。有什么建议么?如果有任何不清楚的地方,请告诉我,谢谢!

最佳答案

此响应假设您在子表中逐行跟踪每次投票的投票情况,而不是仅对特定项目的计数器 +1。

确定您关注热门话题的时间范围。也许1小时会好?

然后运行查询以确定哪个项目在过去一小时内获得的票数最高。按此计数排序,您将拥有一个不断更新的最受好评的项目列表。

SELECT items.name, item_votes.item_count FROM items
INNER JOIN
(
    SELECT item_id, COUNT(item_id) AS item_count
    FROM item_votes
    WHERE date >= dateAdd(hh, -1, getDate()) AND 
          ## only count upvotes, not downvotes
          item_vote > 0
    group by item_id
) AS item_votes ON item_votes.item_id = items.item_id

ORDER BY item_votes.item_count DESC

关于php - 如何在 Mysql 和 PHP 中创建 'rising' 或 'What' 的热查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10376067/

相关文章:

MySQL查询缓存(2)

mysql - 如何删除同一天重复的行?

mysql - Perl 中的多行 MySQL

php - Laravel 5.3 登录重定向到多个用户的不同页面

php - 将多行 MySQL 数据库返回到 iOS App

php - mySQL 语法有什么问题?

php - 如何在同一 mySQL 数据库中的表之间链接数据?

MySQL 嵌套事务 - 不回滚

php - 如何使用 MySQL Joins 选择允许用户阅读的论坛版 block ?

javascript - 如何根据游戏数量显示一个div