如何在 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
子句中有一个聚合函数。 HAVING
与 WHERE
类似,因为它是一个过滤器(它们非常不同)但是如果你想过滤聚合值,例如 MAX
,你需要在HAVING
.
我正在使用事件调度数据库。
我正在从一系列的日子中进行选择,并将它们内部加入到父级时间表中 "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
子句中有一个聚合函数。 HAVING
与 WHERE
类似,因为它是一个过滤器(它们非常不同)但是如果你想过滤聚合值,例如 MAX
,你需要在HAVING
.