分组获取单项+ PK

时间:2013-03-08 01:54:23

标签: mysql

假设我有值

PK |  Section | UserID | Rating |  Body
 1          20       30        8   Test
 2          20       31        5  Test2
 3          21       31        6  Test3

这样的东西来自子查询。我想要的是每个我想获得最高评级的部分。因此1应该获胜(更高等级然后2)并且3应该获胜(它是该部分的唯一一个)。我怎么写这个?我正在考虑做限制1但是因为我有多个部分而无法工作。它也是一个子查询,因此尝试再次加入会很烦人。

2 个答案:

答案 0 :(得分:3)

您希望每个部分只有一个结果(因此您希望按该字段进行分组),并且您希望结果包含最大评级。由于GROUP BY:

,你必须在这里使用HAVING子句
SELECT _____ FROM ______ GROUP BY Section HAVING Rating = MAX(Rating)

答案 1 :(得分:0)

在MySQL中,您可以这样排序:

ORDER BY Rating ASC 要么 ORDER BY Rating DESC

Asc正在上升,而Desc正在下降。您也可以在此之后使用LIMIT 1获得最高评分。

现在,您希望为每个部分获取它。为此,您可以使用WHERE仅选择该部分。如果你想获得每个部分的最高评级,你可能(如果我没有记错的话)必须浏览每个部分编号并查询最高项目。

相关问题