1

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

我从一系列日子中选择并将它们加入到时间表父“事件”中。在我的选择中,我想设定一个条件,选择必须比 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
4

1 回答 1

3

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

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子句中有一个聚合函数。HAVING就像它是一个过滤器WHERE(它们非常不同),但如果您想过滤聚合值,例如MAX,您需要在HAVING.

于 2015-04-19T01:35:33.790 回答