MySQL选择评分最高

时间:2009-12-18 15:10:08

标签: mysql

我有2列,一列名为rating_average,另一列名为rating_count。

我需要选择评级最高的3行,并将等级计数纳入等式中。

5 个答案:

答案 0 :(得分:2)

您可以按顺序执行数学运算,例如:

select    *
from      YourTable
order by  rating_average * rating_count DESC
limit     3

在MySQL中,您可以在查询结尾处添加limit,以将行集限制为前N行。

如果您举一个例子,我们可能会为您提供更具体的解决方案。

答案 1 :(得分:1)

SELECT *
FROM table
ORDER BY rating_average DESC,
         rating_count DESC
LIMIT 3

它给出前3行,首先按rating_average排序,然后按rating_count排序。

示例:

=================================
| rating_average | rating_count |
=================================
|       9.1      |       5      |
|       8.9      |       9      |
|       8.9      |       3      |
=================================

答案 2 :(得分:0)

SELECT * FROM table ORDER BY rating_average DESC LIMIT 3

这可能有用,但您应该发布架构,以便我们可以准确地看到您想要的内容。

答案 3 :(得分:0)

您想如何准确计算评级数?如果您想限制它来说出至少有3个评级的项目,您可以这样做:

SELECT rating_average, rating_count
FROM mytable
WHERE rating_count > 3
ORDER BY rating_average DESC
LIMIT 3

答案 4 :(得分:0)

如果您没有开始使用rating_average和rating_count,但您仍希望获得Andomar提供的结果,则此处仅使用表格'产品'和'评论'



    SELECT products.title,reviews.fk_productid,
    COUNT(reviews.review_id) AS review_count,
    AVG(reviews.rating) AS rating_average,
    COUNT(reviews.review_id) * AVG(reviews.rating) AS total_score 
    FROM reviews
    INNER JOIN products
    ON products.product_id = reviews.fk_productid
    GROUP BY fk_productid
    ORDER BY total_score DESC