我正试图创建一个“热门”列表,其中前10篇文章出现。趋势列表是基于最新的和大多数的观点。这就是我当前的SQL查询的样子:
$resultSet = $db->query("SELECT * FROM Articles ORDER BY Counter DESC, dateStamp LIMIT 10");Counter是存储每篇文章有多少视图的列。dateStamp是存储每篇文章的日期时间的datetime列。我的当前SQL适用于视图的数量。它对顶部视图最多的文章和底部视图最少的文章排序。
我在当前SQL中遇到的唯一问题是,它不只是使用最近的日期。它查找所有日期,并仅根据视图对查询进行排序。一篇文章可能长达2年,但它会有更多的浏览量,因此它将出现在趋势列表中。
如何使查询基于最近视图和大多数视图对结果进行排序?
示例数据:
日期: 8/1/15浏览:20 000 日期: 9/30/16浏览次数: 500 日期: 9/28/16浏览: 400 日期: 9/25/16浏览: 150 日期: 9/22/16浏览次数: 100 日期: 9/21/16浏览日期: 98 日期: 9/20/16意见: 92 日期: 9/18/16意见: 10 日期: 9/15/16意见:5 日期: 9/12/16浏览次数:3
技术上,数据应该如下所示:
日期: 9/30/16浏览次数: 500 日期: 9/28/16浏览: 400 日期: 9/25/16浏览: 150 日期: 9/22/16浏览次数: 100 日期: 9/21/16浏览日期: 98 日期: 9/20/16意见: 92 日期: 9/18/16意见: 10 日期: 9/15/16意见:5 日期: 9/12/16浏览次数:3 日期: 9/11/16浏览:2
它没有安排最近的约会。我需要它来组织最近的日期和意见。视图部分工作正常,只是日期不对。
发布于 2016-09-30 20:07:35
以下是如何获得最新的10项记录:
SELECT * FROM Articles ORDER BY dateStamp DESC LIMIT 10;以下是如何按降序视图排序:
SELECT ... ORDER BY Counter DESC;这两项合并:
SELECT *
FROM (SELECT * FROM Articles ORDER BY dateStamp DESC LIMIT 10) TOP10
ORDER BY Counter DESC;发布于 2016-09-30 20:11:34
我认为你需要使用一个where来限制出现的日期。order by根据第一列对结果排序。它只在两行对第一列具有相同的值时才使用第二列。
https://stackoverflow.com/questions/39798872
复制相似问题