我对构建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]."';";
}
任何帮助将不胜感激 感谢
答案 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"