如何在 MySQL where 子句中使用 MAXDATE

How can I use MAXDATE in MySQL where clause

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

我正在从一系列的日子中进行选择,并将它们内部加入到父级时间表中 "event"。在我的选择中,我想设定一个条件,即选择必须早于 CURDATE。这是我尝试过的方法,但得到的是 "improper use of grouping error"

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

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

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.