[英]Get entry with max value in MySQL
我有一個MySQL數據庫,其中包含許多游戲的高分條目。 我想獲得分數最高的“個人最佳”條目。
我找到了我認為可行的解決方案,直到我在數據庫中獲得更多名稱,然后它才返回完全不同的結果。
到目前為止,我的代碼:
SELECT name, score, date, version, mode, custom
FROM highscore
WHERE score =
(SELECT MAX(score)
FROM highscore
WHERE name = 'jonte' && gamename = 'game1')
對於很多值,實際上會返回正確的值,如下所示:
JONTE 240 2014-04-28 02:52:33 1 0 2053
它可以很好地處理數百個條目,其中一些條目的名稱不同。 但是,當我添加新條目並將名稱交換為'gabbes'時,對於新名稱,我卻獲得了多個條目的列表。 我在這里看不到邏輯,因為數據庫中的條目似乎完全相同,但數據有所不同。
JONTE 176 2014-04-28 11:03:46 1 0 63
GABBES 176 2014-04-28 11:09:12 1 0 3087
上面有兩個整數,但有時也可能會連續返回10-20個條目。
有什么幫助嗎?
如果您想要每個人的高分(即個人最高分),您可以這樣做...
SELECT name, max(score)
FROM highscore
WHERE gamename = 'game1'
GROUP BY name
或者,您可以執行此操作...
SELECT name, score, date, version, mode, custom
FROM highscore h1
WHERE score =
(SELECT MAX(score)
FROM highscore h2
WHERE name = h1.name && gamename = 'game1')
注意:在您的SQL中,您的子句缺少name = h1.name
謂詞。
但是請注意,如果第二個選項多次記錄相同的高分,則該選項將為同一個人提供多個行。
因為多個條目具有相同的高分,所以將返回多個條目。 您可以添加LIMIT 1
僅獲得一個條目。 您可以使用ORDER BY
子句選擇返回哪個條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.