我有一张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