2010-07-24 51 views
0

我有一個遊戲的MySQL高分表,顯示每年過去幾天的每日高分。現在我正在做一個PHP for-loop併爲每一天做一個單獨的查詢,但是這個表變得太大了,所以我想將它壓縮成一個簡單的MySQL語句。高分問題排行榜的MySQL查詢問題

這裏是我的新的查詢現在(date_submitted是時間戳):

SELECT date(date_submitted) as subDate, name, score FROM highScores WHERE date_submitted > "2009-07-16" GROUP BY subDate ORDER BY subDate DESC, score DESC LIMIT 10; 

輸出:

+------------+------------+--------+ 
| subDate | name  | score | 
+------------+------------+--------+ 
| 2010-07-18 | krissy  | 959976 | 
| 2010-07-10 | claire  | 260261 | 
| 2010-07-05 | krissy  | 771416 | 
| 2010-06-19 | krissy  | 698031 | 
| 2010-06-18 | otli  | 264898 | 
| 2010-06-15 | robbie  | 82303 | 
| 2010-06-01 | dad  | 480469 | 
| 2010-05-29 | vicente | 124149 | 
| 2010-05-27 | dad  | 564007 | 
| 2010-05-26 | caleb  | 502623 | 
+------------+------------+--------+ 

我的問題是,當它被SUBDATE分組,它採取了最高得分這是當天最早的時間戳,如下面的查詢所示:

SELECT name, score, date_submitted FROM highScores WHERE date(date_submitted)='2010-06-15' GROUP BY name ORDER BY score DESC; 

輸出:

+--------+--------+---------------------+ 
| name | score | date_submitted  | 
+--------+--------+---------------------+ 
| john | 304095 | 2010-06-15 22:58:02 | 
| april | 247126 | 2010-06-15 21:25:31 | 
| orli | 166021 | 2010-06-15 21:25:31 | 
| robbie | 82303 | 2010-06-15 11:38:39 | 
+--------+--------+---------------------+ 

正如你所看到的,可憐的約翰應該是2010-06-15的領導者。誰能幫忙?希望這是真正簡單的東西,我俯瞰。我試圖在第一個查詢的FROM部分之前使用max(分數),它給了我正確的分數,但沒有包含名稱。

謝謝你的幫助。

回答

0
​​

又見回答另一個'highest record per something'-question

+0

嘿謝謝你。這超出了我的MySQL體驗,但我想我已經開始理解它了。 然而,當我運行這個從MySQL命令行: SELECT名字,得分,SUBDATE FROM( 選擇 名, 得分, DATE(date_submitted)AS SUBDATE, @Rn .....等。 .. 我得到這個錯誤: ERROR 1064(42000):你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「SELECT 名, 得分, DATE(date_submitted)AS'在第2行 – peterangler 2010-07-24 18:48:43

+0

嘿謝謝。我只是試了一遍,並重寫它,而不是複製粘貼,它的工作!我得到的錯誤是一些額外的空白行馬車或複製它的東西。 – peterangler 2010-07-24 22:24:52

0

在第二查詢的末尾添加一個

ORDER BY userScore DESC 

+0

我把「ORDER BY得分降序」在第二次查詢結束。因此,該查詢正確排序。 – peterangler 2010-07-24 17:33:05

+0

我剛剛嘗試在第一個查詢中將「score DESC」更改爲「score ASC」,以查看它是否承認ORDER BY的第二部分,並且它在第一個查詢中給了我完全相同的輸出,所以很奇怪。 – peterangler 2010-07-24 17:40:47

+0

它看起來像糾正了第二個輸出,除非我錯了。 – JNK 2010-07-24 18:02:57