MySQL随着时间的推移不同(唯一)值

时间:2011-02-23 17:01:56

标签: php mysql timestamp distinct

我对构建MySQL查询有疑问。我有一个表,其中一列包含值,另一列包含时间戳。我想要做的是从特定时期到各个时间点获取字段的不同(唯一)值的数量,以便我可以绘制一段时间内唯一值的数量。例如,我希望查询结果如下所示:
Date,COUNT(DISTINCT col1
2011-02-01,10 2011-02-02,16
2011-02-03,24
等。

请注意,这些值是从同一时间点开始的不同值的数量。目前为了实现这一点,我在PHP中使用循环来迭代每个日期的单个查询,因为我有一个大型数据库,所以它需要永远。为了给出更好的图片,我想替换的低效代码如下所示:

for($i=0;$i<count($dates),$i++){      
    $qry = "SELECT COUNT (DISTINCT `col1`) FROM `db`.`table` WHERE `Date` BETWEEN '".$EPOCH."' AND '".$dates[$i]."';";    
}

任何帮助将不胜感激 感谢

2 个答案:

答案 0 :(得分:0)

如果理解了您的问题,您可以使用GROUP声明:

SELECT StampCol, COUNT(DISTINCT DataCol) FROM MyTable GROUP BY StampCol

答案 1 :(得分:0)

SELECT DATE_FORMAT(date_column, "%Y-%m-%d") AS date_column, COUNT(visitors) AS visitors FROM table GROUP BY DATE_FORMAT(date_column, "%Y-%m-%d") ORDER BY date_column desc"