php - 复杂的 SQL 查询 - 热门内容

标签 php mysql sql-server

因此,我正在编写一个查询来从数据库中选择数据,并按受欢迎程度的顺序显示它。我知道如果只是通过诸如 ORDER BY numLikes DESC 之类的命令来订购它,这很简单。或其他什么,但在这种情况下,我想按 numLikes 订购内容并通过datePosted .

如何对内容进行排序,使其显示当天日期中排名靠前的内容?如果纯粹通过 numLikes 排序,顶部内容会 float 到顶部并停留在那里。我希望每天对这些内容进行排序。这是为了建立一个系统,用户可以从过去一天、过去一周、过去一个月以及所有时间的热门帖子中选择热门帖子。

这可以通过单个 SQL 查询来完成吗?是否必须执行 SQL 多查询? SQL 是否强大到足以做到这一点,还是需要 PHP 才能发挥作用?

谢谢!

最佳答案

您只需首先按 datePosted 排序,然后按 numLikes 排序。以下内容:

SELECT * FROM tableName ORDER BY datePosted, numLikes DESC

如果您想在特定范围内置顶帖子,您可以这样做:

SELECT TOP 1 * FROM tableName 
WHERE datePosted BETWEEN [MinDate] AND [MaxDate]
ORDER BY datePosted, numLikes DESC

将 [MinDate] 和 [MaxDate] 替换为您需要的日期,例如过去一周的时间大概是 4 月 14 日和 4 月 20 日。

关于php - 复杂的 SQL 查询 - 热门内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745025/

相关文章:

php - 模拟 Laravel Controller 依赖

c# - 经过一段空闲时间后,图像未从数据库加载

java - 输出值作为 NULL 返回,而不是存储在数据库表中的值

mysql - 如何从 MySQL 中的字符串中提取带有数字的单词?

基于外部库的PHP扩展

javascript - AJAX insert in MySQL delay - 非插入

php - 在 laravel 中发布到相同的表单

mysql - 从 MS Sql 2005 和 MySql 复制数据的建议

sql - 选择SQL中的每条记录

mysql - 将数据从 mssql 复制到 mysql 的最佳工具