PHP / MySQL - 构造SQL查询

时间:2011-03-08 03:37:20

标签: php mysql

我在构建查询时遇到了一些麻烦。

我有一个包含3列的表格。

id - day - pageviews

我基本上想要做的是从最近60天内浏览量最高的表中获取8个id。

day列是日期时间mysql类型。

任何帮助都会很棒,我很难解决这个问题。

干杯,

3 个答案:

答案 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";