我正在向追蹤運動競賽結果的數據庫中寫入查詢。我的數據庫有一個運動員表:通過語句對數據集進行排序
| id | first_name | last_name | Gender |
| 1 | Sam | Johnson | m |
| 2 | Adam | Jones | m |
和成績表
| id | time | athlete_id
| 1 | 1302 | 1
| 2 | 1420 | 1
| 3 | 1491 | 2
| 4 | 1541 | 2
| 5 | 0 | 1
我想檢索所有的運動員只有自己最快的結果。我有這樣
select a.id as aid, a.`first`, a.`last`, r.`id` as `rid`, min(r.`time`) as `time`
FROM athletes a, results r
WHERE
r.athlete_id=a.id AND
r.time > 0
GROUP BY a.id
ORDER BY r.time
查詢到目前爲止,我的查詢會限制結果以最快的時間,但它不是由時間正確排序。我也嘗試在結果表中添加第二個參考號
select a.id as aid, a.`first`, a.`last`, r.`id` as `rid`, r.`time`
FROM athletes a, results r, results r2
WHERE
r.athlete_id=a.id AND
r2.athlete_id=a.id AND
r.time > 0
r1.time < r2.time
ORDER BY r.time
但是這樣會導致內存不足錯誤。成績表擁有超過一百萬的參賽作品,運動員入場人數超過15,000人。所以問題依然存在,有沒有一種有效的方法來排序分組記錄,或者我應該讓PHP腳本在記錄集合循環中移除結果。
你是什麼意思... *它不是按時間排序正確... *?你能根據你的樣本數據提供所需的輸出嗎? – peterm 2013-05-14 04:11:31