我需要帮助使我的代码工作
错误说明:“聚合不能出现在WHERE子句中,除非它在HAVING子句或select列表中包含的子查询中,并且被聚合的列是外部引用。”
这是我的代码:
--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)
最佳答案
在子查询中使用表别名:
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;
如果最近的骑乘是为其他成员进行的,则您的版本可能不会返回任何行。