我有一個遊戲的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(分數),它給了我正確的分數,但沒有包含名稱。
謝謝你的幫助。
嘿謝謝你。這超出了我的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
嘿謝謝。我只是試了一遍,並重寫它,而不是複製粘貼,它的工作!我得到的錯誤是一些額外的空白行馬車或複製它的東西。 – peterangler 2010-07-24 22:24:52