我在构建查询时遇到了一些麻烦。
我有一个包含3列的表格。
id - day - pageviews
我基本上想要做的是从最近60天内浏览量最高的表中获取8个id。
day列是日期时间mysql类型。
任何帮助都会很棒,我很难解决这个问题。
干杯,
答案 0 :(得分:0)
做这样的事情:
SELECT id FROM table_name
WHERE DATE_SUB(CURDATE(),INTERVAL 60 DAY) <= day
ORDER BY pageviews DESC
LIMIT 8;
答案 1 :(得分:0)
与TuteC发布的几乎相同,但你需要一个小组才能得到你需要的东西......
SELECT id, SUM(pageviews) totalViews
FROM table
WHERE DATE_SUB(CURDATE(), INTERVAL 60 DAY) <= day
GROUP BY id
ORDER BY totalViews DESC
LIMIT 8
答案 2 :(得分:0)
$sixtyDaysAgo = date('Y-m-d',strtotime('-60 days'));
$sql = "SELECT id
FROM table_name
WHERE day >= '$sixtyDaysAgo 00:00:00'
ORDER BY pageviews DESC
LIMIT 8";
如果每一行都是当天的一些综合浏览量,并且您正在寻找总值为60天的最高总额,那么您需要将它们全部合计,然后从这些总数中获取前8位,像这样:
$sql = "SELECT id
FROM (
SELECT id, SUM(pageviews) AS total_pageviews
FROM table_name
WHERE day >= '$sixtyDaysAgo 00:00:00'
GROUP BY id
) AS subselect
ORDER BY total_pageviews DESC
LIMIT 8";