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

我对后端的东西不太熟悉,经过一段时间的挣扎,我设法重新加入了桌子。

我已经设法将所有数据连接在一起,当我将它拉到前端时,它在我的 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,{
        "rank_ID": 11,"history_ID": 468,"score": 0,"quiz_ID": 1
    },{
        "rank_ID": 13,"history_ID": 469,"score": 50,"quiz_ID": 2
    },{
        "rank_ID": 15,"history_ID": 470,"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个玩家做测验,他们可以做多次,所以我只想过滤掉他们最好的表现,也就是他们的最高分

这是我制作的排名列表:

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

history_ID 列内部与历史表相关,它与用户名和 quiz_ID 信息相关,但我刚刚像上面的 Json 一样将它们连接在一起

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

到这一步,我的大脑开始冻结,想不出任何情况和解决方案,即使我做了一些研究和搜索,例如(GROUP BY,Subquery之类的),我仍然想不通在我的场景中,我需要一些帮助,感谢阅读。 :)

iCMS 回答:如何仅过滤 MySQL 中每个用户的最高分?

如果我理解正确的话,您要查找的内容类似于

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

距离我上次练习 SQL 已经有一段时间了,但应该是这样的。

,

使用 ORDER BY Score DESC 获得最高分。我认为这将解决您的问题。

本文链接:https://www.f2er.com/147206.html

大家都在问