2017-02-22 43 views
0

我工作的一個基於時間的遊戲(其中較低的時間比較好),我有這方面的排行榜,其中每一個的通關存儲到一個SQL數據庫。獲取最高分,但刪除重複的用戶(SQL)

我想獲得最高15最低(最好)從數據庫次,但只顯示每個用戶一個輸出,以便顯示前15名用戶的最佳時期,但我似乎無法在返回所有信息時做到這一點。

我使用的查詢是:

SELECT * FROM `scores` WHERE size='$size' ORDER BY `time` ASC LIMIT 15 

謝謝。

+0

什麼是'size'? –

+0

這是一款基於棋盤的遊戲,所以我存儲了棋盤的大小。 –

+0

http://stackoverflow.com/questions/5967130/mysql-select-one-column-distinct-with-corresponding-other-columns保持你的例子的限制 – mickmackusa

回答

1

如果您使用user列對數據進行分組,則可以使用MIN()來隔離每個用戶的最低/最佳時間。最後,你按BestTimeASC(這樣低的數字列第一),並截斷結果與LIMIT設置。

查詢:

SELECT `user`, MIN(`time`) AS BestTime 
FROM `scores` 
WHERE `size` = '10x10' 
GROUP BY `user` 
ORDER BY `BestTime` 
LIMIT 15; 
+0

謝謝!它的工作,並沒有使用子查詢。 –

0

你似乎想是這樣的:

select s.* 
from scores s 
where s.score = (select max(s2.score) from scores s2 where s2.userid = s.userid) 
order by s.score asc 
limit 15; 

我不知道什麼是size在您的示例查詢。

+0

這是一個基於板的遊戲,所以我存儲的大小的董事會。 –

1
SELECT * FROM (SELECT user,size,min(time) as time FROM scores 
WHERE size = '10x10' 
GROUP BY user, size) 
ORDER BY time 
LIMIT 15 

爲每個用戶選擇最短時間,並返回前15名用戶的最短時間分數。

+0

...分鐘(時間)時間 –

+0

@FabienTheSolution肯定。謝謝。做了編輯。 – Vahid