即使没有值,MYSQL也从另一个表返回平均值

时间:2015-05-23 14:30:05

标签: mysql

我有一张表格,其中包含艺术品的信息,称为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

它不会返回任何在评级表中没有评级的东西。 谢谢你。

1 个答案:

答案 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,则查询始终只返回一行。