我有一个高分的排行榜,并且不需要显示重复记录以获得更准确的排行榜。
Table: highscores
+-------------------+----------------+-------------+-------+
| id | name | time | moves | score |
+-------------------+----------------+-------------+-------+
| 1 | person1 | 33 | 22 | 245 |
+-------------------+----------------+-------------+-------+
| 2 | person1 | 83 | 31 | 186 |
+-------------------+----------------+-------------+-------+
我的查询是
SELECT * FROM highscores ORDER by Score DESC LIMIT 100
如何更改查询以仅显示重复记录的最高记录而不会弄乱下降部分
这似乎正在发挥作用
SELECT * FROM highscores GROUP BY name ORDER by Score DESC LIMIT 100
答案 0 :(得分:1)
使用mysql的自定义组:
SELECT * FROM (
SELECT * FROM highscores
ORDER by Score DESC) x
GROUP BY name
ORDER by Score DESC
LIMIT 100
这是有效的,因为当并非所有非聚合列都列在group by中时,mysql会返回组中列出的列的每个唯一组合遇到的第一个行。