删除列表SQL中的重复列表

时间:2014-11-27 15:26:55

标签: mysql greatest-n-per-group

我有一个游戏桌,其中更多的人玩游戏,它会互相重复..我可以删除重复没有问题,但这一个是不同的,因为我想删除其他人同时保持最高分是否可能做到了吗?

例如

Name   Level Score
Green  99    797,000
Green  99    819,000
Green  99    970,000
Green  99    890,000

我想保留第3行并删除其他第3行。

1 个答案:

答案 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);

此类问题通常标记为,这是一个经常出现的问题。

PS:不要认真对待downvotes。 Stack Overflow已成为一个非常讨厌的地方。总会有人认为你没有提出有效的问题,或者没有“正确地”提出问题。