我有以下SQL查询:什么不对这个SQL
SELECT tblBooks.bookID,
tblBooks.title,
tblBooks.author,
tblBooks.coverImage,
ROUND(ROUND(tblReviews.rating * 2)/2, 1) AS rating
FROM tblBooks
LEFT JOIN tblReviews
ON tblBooks.bookID = tblReviews.bookID
LEFT JOIN tblMembers
ON tblReviews.userID = tblMembers.userID
WHERE tblReviews.bookID IS NOT NULL
ORDER BY rating DESC
LIMIT 0, 40
我想查询数据库,并返回的平均等级,所以如果一本书进行了审查6次,每次评分共达来自6位用户并计算出平均值。现在只有最新的评级被返回。当我将此行更改为:
ROUND(ROUND(AVG(tblReviews.rating) * 2)/2, 1) AS rating
只有一个结果总共返回,所以显然有些问题,但我不知道是什么。
如果任何人都可以对此有所了解,我认为这将与我的加入有关。
您不能混合聚合函数和常规列选择。您需要进行分组以获得该结果或使用子查询 –