在SQL查询中过滤双精度值

时间:2013-01-22 21:22:28

标签: mysql group-by

我遇到了MySQL SQL命令的问题 我有一个包含3列的表格:

 id (int) | ip(string) | time(mysql timestamp)

我希望计算所有按时间分组的行。我使用以下代码:

 SELECT DATE( TIME ) as date, COUNT( * ) as count
 FROM table
 WHERE TIME > ( NOW( ) - INTERVAL 10 DAY ) 
 GROUP BY DATE(  `time` )


好吧,但现在,我想忽略双IP。例如: 如果我将以下数据放在mysql表中:

 ID | time                  | IP
 --------------------------------------
 1  | 2013-01-21 20:48:01   | 127.0.0.1  
 2  | 2013-01-22 20:48:01   | 127.0.0.1  
 3  | 2013-01-22 20:48:01   | 127.0.0.1
 4  | 2013-01-22 20:48:01   | 127.0.0.3  

我只想看到以下数据:

 date       | count
 ------------------
 2013-01-21 | 1  
 2013-01-22 | 2  

最好的方法是什么?我不会在我的应用程序中创建一个删除所有重复项的循环,因为表会快速增长,如果我在我的应用程序中这样做,我会花费很多资源。

1 个答案:

答案 0 :(得分:4)

试试这个:

SELECT DATE(`time`) as date, COUNT( DISTINCT IP ) as count
 FROM table
 WHERE `time` > ( NOW( ) - INTERVAL 10 DAY ) 
 GROUP BY DATE(  `time` )

<强> SQL FIDDLE DEMO