假设我有值
PK | Section | UserID | Rating | Body
1 20 30 8 Test
2 20 31 5 Test2
3 21 31 6 Test3
这样的东西来自子查询。我想要的是每个我想获得最高评级的部分。因此1应该获胜(更高等级然后2)并且3应该获胜(它是该部分的唯一一个)。我怎么写这个?我正在考虑做限制1但是因为我有多个部分而无法工作。它也是一个子查询,因此尝试再次加入会很烦人。
答案 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
仅选择该部分。如果你想获得每个部分的最高评级,你可能(如果我没有记错的话)必须浏览每个部分编号并查询最高项目。