我正在使用事件的调度数据库。
我从一系列日子中选择并将其加入日程表中的父“事件”。在我的选择中,我想提出一个选择必须比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
答案 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
子句中有一个聚合函数。 HAVING
与WHERE
类似,因为它是一个过滤器(它们非常不同),但如果要过滤聚合值(例如MAX
),则需要在HAVING
。