mysql sql查询每天最后一条数据

在日常开发中,我们经常会需要从数据库中查询某个时间范围内每天最后一条数据的需求。比如我们有一个存储用户登录日志的数据表,我们想要查看每天最后一条用户的登录记录。
在MySQL中,可以利用子查询和MAX函数来实现这个需求。下面将详细介绍如何使用SQL语句来查询每天最后一条数据。
数据表结构
假设我们有一个名为login_log的数据表,结构如下:
CREATE TABLE login_log (
id INT PRIMARY KEY,
user_id INT,
login_time DATETIME
);
查询每天最后一条数据
我们首先需要根据日期将数据进行分组,并找出每天的最后一条数据。下面是实现这个需求的SQL语句:
SELECT ll.*
FROM login_log ll
JOIN (
SELECT DATE(login_time) AS login_date, MAX(login_time) AS max_login_time
FROM login_log
GROUP BY login_date
) ll2 ON DATE(ll.login_time) = ll2.login_date AND ll.login_time = ll2.max_login_time;
上面的SQL语句中,首先我们执行了一个子查询,用来找出每天的最后一次登录时间。然后我们将原始login_log表和这个子查询结果进行JOIN操作,找出每天最后一条数据的完整信息。
示例
假设我们有以下login_log表的数据:
| id | user_id | login_time |
|---|---|---|
| 1 | 101 | 2022-01-01 08:00:00 |
| 2 | 102 | 2022-01-01 12:00:00 |
| 3 | 101 | 2022-01-01 18:00:00 |
| 4 | 103 | 2022-01-02 10:00:00 |
| 5 | 102 | 2022-01-02 15:00:00 |
应用上面的SQL语句,将得到如下查询结果:
| id | user_id | login_time |
|---|---|---|
| 3 | 101 | 2022-01-01 18:00:00 |
| 5 | 102 | 2022-01-02 15:00:00 |
这样,我们就成功查询到了每天最后一条数据。可以看到结果分别是用户101在2022-01-01的最后一次登录记录和用户102在2022-01-02的最后一次登录记录。
通过以上方法,我们可以方便地查询每天最后一条数据,满足项目中的需求。
极客笔记