我有一張2列,日期和分數表。它最多有30個參賽作品,最近30天每場參賽作品一個。MySQL如何填寫範圍內的缺失日期?
date score
-----------------
1.8.2010 19
2.8.2010 21
4.8.2010 14
7.8.2010 10
10.8.2010 14
我的問題是,一些日期缺失 - 我希望看到:
date score
-----------------
1.8.2010 19
2.8.2010 21
3.8.2010 0
4.8.2010 14
5.8.2010 0
6.8.2010 0
7.8.2010 10
...
我從單個查詢需要的是讓:19,21,9,14,0,0 ,10,0,0,14 ...這意味着缺少的日期是填充0.
我知道如何獲取所有的值和服務器端語言遍歷日期和缺少空白。但這是可能的在MySQL中做的,所以我按日期排序結果,並得到缺失的部分。
編輯:在這個表中有另一個名爲UserID的列,所以我有30.000個用戶,其中一些人在這個表中有得分。我每天刪除日期,如果日期< 30天前,因爲我需要爲每個用戶的最後30天得分。原因是我製作了過去30天內用戶活動的圖表,並繪製了我需要用逗號分隔的30個值的圖表。所以我可以說在查詢讓我的USERID = 10203活動和查詢會得到我30分,每過去30天的一個。我希望我現在更清楚。
是的,這是可能的,但*爲什麼*你會這樣做? – NullUserException 2010-08-21 20:32:23
我還是不明白。不要從數據庫中獲取不必要的數據,如果你可以用繪製圖表的任何內容填補這些空白,你就可以節省一些開銷。 – NullUserException 2010-08-21 20:42:11
但我必須爲USERID選擇數據,例如獲得20行日期並得分,然後我必須在我的服務器端語言(ASP)中循環以檢查30天前是否有日期,如果它是不要讓0其他數據庫值...這是不是更消耗從數據庫30取值,只是構造字符串? – Jerry2 2010-08-21 20:45:32