我希望获得给定 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
但是,我想知道是否可以使用一个查询来做到这一点。
最佳答案
这是你可以考虑的事情:
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))
关于mysql - 一个查询中给定时间段内用户的第一个和最后一个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923407/