如何在MySQL中选择最大别名值



我对mysql很陌生,这里有这个SQL:

SELECT * , MAX(meeting_date) AS recent_meeting_date
FROM driver
INNER JOIN  meeting_attendee ON meeting_attendee.attendee_email = driver.driver_email
INNER JOIN  meeting ON meeting.meeting_id = meeting_attendee.meeting_id
WHERE recent_meeting_date < UTC_TIMESTAMP
GROUP BY driver_id
ORDER BY driver_id;

我有一个driver表,其中包含驱动程序详细信息和来自meeting表的内部联接,其中有所有会议的列表,而meeting_attendee表中有过去和将来参加会议的所有驱动程序的列表。

我需要一个sql,显示所有尚未预订会议的司机的列表,这意味着他们最近的会议日期小于今天的日期,不大于今天的日期。

这个sql不会运行,因为我们不能在WHERE子句中使用recent_meeting_date。如何修复sql以使其正常工作?

由于不能在where子句中使用别名引用,因此出现错误。在查询中,您引用了are子句中的recent_meeting_date。若要修复查询,您需要使用HAVING子句,这样您就可以解决问题。要了解更多关于WHERE与HAVING的信息,请查看此stackoverflow

以下是包含have子句的完整查询:

SELECT * , MAX(meeting_date) AS recent_meeting_date
FROM driver
INNER JOIN  meeting_attendee ON meeting_attendee.attendee_email = driver.driver_email
INNER JOIN  meeting ON meeting.meeting_id = meeting_attendee.meeting_id
GROUP BY driver_id
HAVING recent_meeting_date < UTC_TIMESTAMP
ORDER BY driver_id;

最新更新