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

标签 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

但是,我想知道是否可以使用一个查询来做到这一点。

最佳答案

这是你可以考虑的事情:

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/

相关文章:

php - insert into table where column increments by 1 与相同数据的其他行相比

MySQL存储函数: Working with a comma-separated string in MySQL

mysql - 在mysql中获取好友列表

mysql - 解释计划在mysql中的含义

php - Laravel 使用数据透视表的多对多关系

javascript - 如何增加 dhtmlxgantt 图表的日期

c# - 在 C# for SQL 中使用多个插入语句时如何使用 ExecuteNonQuery 获取受影响的记录

php - DataTables columnFilter number-range 过滤

php - NOTICE : Trying to get property of non-object. ..我想从返回状态为NULL的表中获取未返回的图书数量

sql - 查找每个月的第一个和最后一个工作日sql