如何在MySQL where子句中使用MAX DATE

时间:2015-04-19 01:21:46

标签: mysql select maxdate

我正在使用事件的调度数据库。

我从一系列日子中选择并将其加入日程表中的父“事件”。在我的选择中,我想提出一个选择必须比CURDATE更旧的条件。这是我尝试过的,但却得到了“错误使用分组错误”

SELECT MIN(event_schedule.event_day) as mindate, MAX(event_schedule.event_day) as maxdate, event.event_title  
FROM event_schedule 
INNER JOIN event ON event_schedule.event_id = event.id 
WHERE MAX(event_schedule.event_day) < CURDATE()
GROUP BY event.id

1 个答案:

答案 0 :(得分:2)

如果您将查询更改为以下内容,那么您应该没问题:

SELECT MIN(event_schedule.event_day) as mindate, MAX(event_schedule.event_day) as maxdate, event.event_title  
FROM event_schedule 
INNER JOIN event ON event_schedule.event_id = event.id
GROUP BY event.event_title
HAVING maxdate < CURRENT_DATE()

我删除了您的WHERE子句,支持HAVING子句并添加了GROUP BY子句。 GROUP BY是查询正确运行所必需的,并且您收到错误的原因是因为您在WHERE子句中有一个聚合函数。 HAVINGWHERE类似,因为它是一个过滤器(它们非常不同),但如果要过滤聚合值(例如MAX),则需要在HAVING