我有一张表格,其中包含艺术品的信息,称为ART,另一张名为评级
artid title artist artid userid rating
---------------------- -----------------------
1 sunset paul 1 7 1
2 cows jane 1 10 5
我需要一个select语句,它会给我所有的行和ART以及平均评分(如果有的话),例如
for example
artid title artist averagerating
--------------------------------------
1 sunset paul 3
2 cows jane NULL
最接近我的是 SELECT *,AVG(评级)FROM art LEFT JOIN评论ON art.artid = reviews.artid;
但它只返回
artid title artist averagerating
--------------------------------------
1 sunset paul 3
它不会返回任何在评级表中没有评级的东西。 谢谢你。
答案 0 :(得分:1)
您需要group by
:
SELECT art.*, AVG(reviews.rating)
FROM art LEFT JOIN
reviews
ON art.artid = reviews.artid
GROUP BY art.artid;
如果AVG()
子句中有聚合函数(例如SELECT
),则查询是聚合查询。如果没有GROUP BY
,则查询始终只返回一行。