已编辑
我想这就是你要找的。这将为您提供 endTime 比每个 mmeName 的最新当前时间早一小时的任何记录。'max' 子选择获取每个 mmeName 的最新结束日期时间,并且在此之前的一小时记录中的连接匹配。
SELECT mmeName, endDate, endTime, c_ratio, set_time
FROM attach a
JOIN
(SELECT mmeName, CONCAT(endDate, ' ' , endTime) max_endDateTime
FROM attach
WHERE type = 'INIT'
ORDER BY endDate DESC, endTime DESC
) AS max ON max.mmeName = a.mmeName
AND max.max_endDateTime = DATE_ADD(CONCAT(endDate, ' ' , endTime), INTERVAL 1 HOUR)
WHERE type = 'INIT'
;
原来的
select mmeName, endDate, endTime, c_ratio, set_time
from attach
where type='INIT' and Date(endDate)=curDate() and
endTime >= DATE_SUB(now(), INTERVAL -1 HOUR)
group by mmeName;
注意:如果给定的 mmeName 有多个匹配记录,此查询将只获取其中一个。
已编辑:您需要从 WHERE 子句中删除 TIME() 函数。两者都会有日期和时间,如果你没有,如果你在 12:00 AM 到 1:00 AM 之间运行它,它不会返回任何结果。