4

我希望获得给定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

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

4

1 回答 1

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))
于 2013-07-29T12:00:44.097 回答