0

我需要选择具有唯一名称的评价最高的文章。我有这个文章表:

id     name   
---------------
1    Article 1 
2    Article 1
3    Article 2

和投票表:

article_id   rating
-------------------- 
   1           3
   1           2
   3           1

当我按名称对文章进行分组时,即使是同名文章,它也会从评分中计算平均值。

SELECT article.name, AVG(vote.rating) rating
FROM article
LEFT JOIN vote ON vote.article_id = article.id
GROUP BY article.name 

但我想获得评分最高的文章的平均评分。有谁知道如何做到这一点?谢谢你的任何建议。

编辑:我想得到这个结果:

    name       average_rating
   --------------------------
   Article 1   2.5
   Article 2   1
4

3 回答 3

1

这就是我一直在寻找的:

SELECT result.id, result.name, result.rating
FROM (
    SELECT article.id AS id, article.name AS name, AVG(vote.rating) AS rating
    FROM article 
    LEFT JOIN vote ON vote.article_id = article.id
    GROUP BY article.id
    ORDER BY rating DESC
) AS result
GROUP BY result.name

可能,它可以处理得更好,但这只是工作。谢谢你的帮助。

于 2013-02-10T20:18:17.117 回答
0

您是否尝试过按 article_id 分组?

于 2013-02-10T18:14:02.410 回答
0

您应该改为按文章 ID 进行分组,因为每个 ID 都是唯一的

SELECT article.name, AVG(vote.rating) rating
FROM article
LEFT JOIN vote ON vote.article_id = article.id
GROUP BY article.id
于 2013-02-10T18:39:08.353 回答