首页 > 解决方案 > mysql max 条件在 where 子句中的使用

问题描述

SELECT MAX(r.endTime) as maxETime,r.vehicleId,v.emixis_id
FROM reservation r , vehicle v 
WHERE r.vehicleId = v.vehicleId AND 
r.workingDay = CURRENT_DATE() AND 
r.isNote=0 AND 
r.isDeleted=0 AND 
r.status NOT IN("cancelled") AND 
DATE_FORMAT(NOW(),'%H:%i:%s') > DATE_SUB(MAX(r.endTime), INTERVAL 1 HOUR) 
GROUP BY r.vehicleId;

这是我的代码,想要做的是获得MAX(r.endTime)价值DATE_SUBMAX不适用于 where 条件,有没有办法做这种事情?我尝试使用@var:=MAX(r.endTime)并将其设置在内部DATE_SUB,但@var始终存储最后一行的值。

标签: mysql

解决方案


SELECT MAX(r.`endTime`) as `maxETime`,r.`vehicleId`,v.`emixis_id`
FROM `reservation` r , `vehicle` v 
WHERE r.`vehicleId` = v.`vehicleId` AND 
r.`workingDay` = CURRENT_DATE() AND 
r.`isNote`=0 AND 
r.`isDeleted`=0 AND 
r.`status` NOT IN("cancelled")
GROUP BY r.`vehicleId` 
HAVING DATE_FORMAT(NOW(),'%H:%i:%s') > DATE_ADD(MAX(r.`endTime`),     INTERVAL 1 HOUR)

推荐阅读