一个查询中给定时间段内用户的第一个和最后一个记录

时间:2013-07-29 11:57:59

标签: mysql sql

我希望在一段时间内获得给定user_id的第一张和最后一张记录,例如24小时。

我知道可以使用两个查询完成此操作,执行此类操作,然后切换ORDER BY ASC / DESC

SELECT id, user_id, date, other_columns
FROM table
WHERE user_id = 1 AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
ORDER BY date DESC
LIMIT 1

但是,我想知道是否可以使用一个查询来执行此操作。

1 个答案:

答案 0 :(得分:3)

这是你可以考虑的事情:

SELECT t.id, t.user_id, t.date, t.other_columns
FROM table t
WHERE user_id = 1
    AND date = (
        SELECT MIN(date)
        FROM table
        WHERE user_id = t.user_id
            AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))
UNION ALL
SELECT id, user_id, date, other_columns
FROM table
WHERE user_id = 1
    AND date = (
        SELECT MAX(date)
        FROM table
        WHERE user_id = t.user_id
            AND date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR))