首页 > 解决方案 > 查询返回错误值

问题描述

我的团队有一个登录/注销应用程序,

我想获取每天的最后一次注销时间(知道员工可以在白天注销并再次登录)

SELECT 
  DATE_FORMAT(time, "%d.%m.%Y"), 
  DATE_FORMAT(time, "%H:%i:%s") 
FROM 
  mk_pay_loginout 
WHERE 
  u_id = ' . $u_id . ' 
  AND type = 2 
  AND time LIKE "' . $this_month . '-%" 
GROUP BY 
  DAY(time) 
ORDER BY 
  time DESC

type = 2表示注销时type = 1表示登录

使用此代码,我发现脚本没有选择当天的最后一次注销

这是一个例子:

在此处输入图像描述

因为2021-08-24他在白天注销然后再次登录然后注销。

我正在使用的查询应该只拾取,2021-08-24 18:00:04但在这里它选择了错误的那个2021-08-24 11:11:30

在此处输入图像描述

现在谁能帮我找到查询中的错误?

标签: mysqlsql

解决方案


您的分组依据不是按日期分组,而是按天分组,并且您还没有为给定的日期组选择最长时间。重新运行您的查询,如下所示。

select
    date(t1.time) as date,
    max(time(t1.time)) as latest_time
from
    t1
where
    year(t1.time) = 2021
    and month(t1.time) = 8
    and t1.type = 2
group by
    date(t1.time)
order by
    date(t1.time);

db<>小提琴


推荐阅读