我有一个游戏桌,其中更多的人玩游戏,它会互相重复..我可以删除重复没有问题,但这一个是不同的,因为我想删除其他人同时保持最高分是否可能做到了吗?
例如
Name Level Score
Green 99 797,000
Green 99 819,000
Green 99 970,000
Green 99 890,000
我想保留第3行并删除其他第3行。
答案 0 :(得分:2)
在您显示的示例中,您可以通过这种方式获得最上一行:
SELECT * FROM `thistable` ORDER BY score DESC LIMIT 1
但我假设你在表格中有多个名字。如果您想要特定名称的最高分:
SELECT * FROM `thistable` WHERE Name = 'Green' ORDER BY Score DESC LIMIT 1
如果您想要多个名称的结果,但每个名称得分最高的行,则会更复杂一些:
SELECT * FROM `thistable`
JOIN (SELECT Name, MAX(Score) AS Score FROM `thistable` GROUP BY Name) AS x
USING (Name, Score);
此类问题通常标记为greatest-n-per-group,这是一个经常出现的问题。
PS:不要认真对待downvotes。 Stack Overflow已成为一个非常讨厌的地方。总会有人认为你没有提出有效的问题,或者没有“正确地”提出问题。