Mysql查询不显示重复记录

标签 mysql

我有一个高分排行榜,并且需要不显示重复记录以获得更准确的排行榜。

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

最佳答案

使用mysql的自定义分组依据:

SELECT * FROM (
   SELECT * FROM highscores
   ORDER by Score DESC) x
GROUP BY name
ORDER by Score DESC
LIMIT 100

这是有效的,因为当分组依据中未列出所有非聚合列时,mysql 将返回分组依据中列出的列的每个唯一组合遇到的第一行。

关于Mysql查询不显示重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071960/

相关文章:

mysql - SQL:Sum 返回 null

php - yii2/mysql 中 now() 和 db\Expression 的奇怪行为

mysql - 将数据库时间戳值与今天的日期进行比较,并在 codeigniter 中获取结果

mysql - 是否可以计算每行与 MATCH AGAINST 匹配的单词数

mysql - 导入 SQL 数据库日期时间的默认值无效

php - 检查多行并返回是否全部匹配

mysql - php mysql中选定数据的总和

javascript - 在 MySQL 中使用多数据库查询与单数据库查询的比较

性能差和高 CPU 负载调优的 Mysql - cs-cart linux

sql - 在mysql中生成月份列表