mysql - 按两列分组,里面有两个排序元素
问题描述
好的,我试着问这个,它被标记为重复的一些其他问题,不回答我想问的问题。因此,如果你们能够在驳回问题之前真正阅读该问题,那就太好了。
我有一张表,我在其中注册用户在某些游戏中的表现(我们称之为“分数”。该表基本上是:id、id_user、id_game、game_level、分数和时间。
然后我有一个表(我们称之为“游戏”),用于存储游戏信息,基本上是:id、名称、级别、描述等。
所以,我现在需要的是为确定的用户获得每个游戏和级别配对的最佳结果(分数 desc,时间 asc),同时从游戏表中检索游戏信息。
我尝试的是:
SELECT id_game
, game_level
, score
, time
FROM scores
where id_user = 4
order
by id_game asc
, game_level asc
, score desc
, time asc
我得到了所有我想要的结果。然后我将其用作派生表来对结果进行排序,如下所示:
SELECT *
from
( SELECT id_game
, game_level
, score
, time
FROM scores
where id_user = 4
order
by id_game asc
, game_level asc
, score desc
, time asc
) A
group
by id_game
, game_level
它确实分组,但没有显示每组的第一个结果(最高分和最低时间)。我想也许它会显示小组的最后一个结果,所以我尝试反转分数逻辑,但效果不佳。
我做错了什么,有没有更简单的方法呢?
Ps.:我什至没有尝试加入游戏桌来获取游戏信息,因为我无法获得我想要的结果。
好的,这是示例数据:
+----+---------+------------+-------+-------+---------+
| id | id_game | game_level | score | time | id_user |
+----+---------+------------+-------+-------+---------+
| 1 | 1 | 1 | 70 | 01:20 | 4 |
| 2 | 1 | 1 | 70 | 01:17 | 4 |
| 3 | 1 | 2 | 66 | 00:44 | 4 |
| 4 | 1 | 2 | 64 | 00:22 | 4 |
| 5 | 1 | 3 | 100 | 03:24 | 4 |
| 6 | 1 | 4 | 99 | 01:29 | 4 |
| 7 | 1 | 4 | 99 | 01:23 | 4 |
+----+---------+------------+-------+-------+---------+
这是预期的结果:
+---------+------------+-------+-------+
| id_game | game_level | score | time |
+---------+------------+-------+-------+
| 1 | 1 | 70 | 01:17 |
| 1 | 2 | 66 | 00:44 |
| 1 | 3 | 100 | 03:24 |
| 1 | 4 | 99 | 01:23 |
+---------+------------+-------+-------+
我找到了很多答案,解释了如何通过参数对一个订单执行此操作,但没有两个答案。
解决方案
推荐阅读
- php - 如何通过生成列布局在 foreach 中输出元素?
- mongodb - 带有 C# 驱动程序的 MongoDB - 带有排序的日期格式
- c# - 使用通过 Azure MSI 获得的令牌从 TokenCredential 创建 Azure CloudStorageAccount
- java - JavaFX - 如何删除 ListView 和 TableView 的乐队?
- reactjs - @twilio/flex-webchat-ui 如何集成到我的 react redux 项目中
- javascript - 在 ASP.NET MVC 上自动完成搜索时 Javascript 文件冲突
- javascript - onClick 事件将使用 PHP-Codeigniter 保存单击的锚点名称
- python - 如何实现包含具有不同激活函数的神经元的单个隐藏层?
- java - 实现 Glide/Fresco/Picasso 在加载到 Imageview 之前调整图像大小以避免 OOM 问题
- mongodb - 如何整合 Jmeter + graylog + mongodb ?