MySQL HELP聚合可能不会出现在WHERE子句中

时间:2018-01-13 16:46:31

标签: mysql sql

我需要帮助才能使我的代码正常工作 错误说:“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用。”

这是我的代码:

--Query 3
SELECT m.*,b.BikeStopID, r.DateTimeStart, r.DateTimeEnd
FROM Member m INNER JOIN Ride r ON m.MemberID = r.MemberID
INNER JOIN Bike b ON r.BikeID = b.BikeID
WHERE m.MemberID = 4 AND r.DateTimeEnd = (SELECT MAX(r.DateTimeEnd) FROM Ride)

1 个答案:

答案 0 :(得分:1)

在子查询中使用表别名:

WHERE m.MemberID = 4 AND
      r.DateTimeEnd = (SELECT MAX(r2.DateTimeEnd) FROM Ride r2)

查询中的表达式r.DateTimeEnd引用外部查询中的r - 因此出错。

如果你只是寻找最新的一行,我更有可能写:

SELECT m.*, b.BikeStopID, r.DateTimeStart, r.DateTimeEnd
FROM Member m INNER JOIN
     Ride r
     ON m.MemberID = r.MemberID INNER JOIN
     Bike b
     ON r.BikeID = b.BikeID
WHERE m.MemberID = 4 
ORDER BY r.DateTimeEnd DESC
LIMIT 1;

如果最近的乘车是针对不同的会员,您的版本可能不会返回任何行。

相关问题