如何只过滤每个用户在 MySQL 中的最高分?

How can I filter only the highest score of each user in MySQL?

我对后端的东西不太熟悉,经过一段时间的努力,我设法加入了table。

我已经设法加入并把所有的数据联合起来,当我把它拉到前端时,它在我的 POSTMAN Json 中显示是这样的。

[
    {
        "rank_ID": 1,
        "history_ID": 427,
        "score": 100,
        "username": "karame123",
        "user_ID": 26,
        "quiz_ID": 6
    },
    {
        "rank_ID": 4,
        "history_ID": 463,
        "score": 60,
        "username": "testing_demo",
        "user_ID": 22,
        "quiz_ID": 6
    },
    {
        "rank_ID": 11,
        "history_ID": 468,
        "score": 0,
        "username": "testing_demo",
        "user_ID": 22,
        "quiz_ID": 1
    },
    {
        "rank_ID": 13,
        "history_ID": 469,
        "score": 50,
        "username": "testing_demo",
        "user_ID": 22,
        "quiz_ID": 2
    },
    {
        "rank_ID": 15,
        "history_ID": 470,
        "score": 100,
        "username": "testing_demo",
        "user_ID": 22,
        "quiz_ID": 1
    }
]

这是我在 MySQL 中实现它的查询:

SELECT ranklist.*, histories.history_ID, users.username, users.user_ID, quizs.quiz_ID 
FROM ranklist 
    LEFT JOIN histories ON (histories.history_ID = ranklist.history_ID)
    LEFT JOIN users ON (users.user_ID = histories.user_ID) 
    LEFT JOIN quizs ON (quizs.quiz_ID = histories.quiz_ID)

我还没有实现 WHERE quiz_ID = ?在前端插入我想要的 quiz_ID ,我仍在尝试弄清楚如何使用 POSTMAN

过滤它

我只想过滤特定 quiz_ID 中每个 user_ID 的最高分。

比如在quiz_ID = 6时,可能有3位玩家做题,他们可以做多次,所以我只想过滤掉他们最好的表现,也就是他们的最高分

这是我制作的排名列表table:

history_ID 栏内与历史记录 table 相关,它与用户名和 quiz_ID 信息相关,但我只是将它们像 Json以上

到这一步,我的脑子开始僵化了,我想不出任何情况和解决方案,即使我做了一些研究和搜索,例如(GROUP BY,像 Subquery 之类的),我仍然不能'在我的场景中无法弄清楚,我需要一些帮助,感谢阅读。 :)

使用ORDER BY Score DESC获得最高分。我想这会解决你的问题。

如果我理解正确的话,你正在寻找的是

SELECT user_ID, quiz_ID ,MAX(score) from yourTable WHERE quiz_ID = id GROUP BY user_ID

距离上次练习已经有一段时间了SQL不过应该是这样吧