我希望在一段时间内获得给定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
但是,我想知道是否可以使用一个查询来执行此操作。
答案 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))