组使用日期函数时mysql的奇怪行为

时间:2013-08-23 11:48:07

标签: mysql

使用COUNT(DISTINCT ...)和GROUP BY DATE(...)时,Mysql似乎返回错误的结果。 我按“record_date”列进行分组,我希望在结果集中看到不同的值,但事实并非如此。此外,由于某种原因,我无法订购结果。

我不知道是什么导致了MySQL的这种行为。

我的表:

CREATE TABLE `test_table` (
`test_id` int(10) unsigned NOT NULL auto_increment,
`rid` varchar(50) default NULL,
`rid_test_id_ppl` int(10) unsigned NOT NULL,
`record_time` datetime default NULL,
PRIMARY KEY  (`test_id`),
UNIQUE KEY `uid` (`rid`),
KEY `rid_test_id_ppl` (`rid_test_id_ppl`),
KEY `record_time` (`record_time`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 

我的查询:

  SELECT DATE(`record_time`) AS record_date
       , COUNT( DISTINCT rid_test_id_ppl ) AS dubl
    FROM test_table
GROUP BY record_date
ORDER BY record_date ASC

我的结果:

+------------+-------+
| record_date| dubl  |
+------------+-------+
| NULL       | 58569 |
| 2013-08-21 |  6052 |
| 2013-08-22 | 19180 |
| 2013-08-23 |     1 |
| 2013-08-22 |  7632 |
| 2013-08-23 |     1 |
| 2013-08-22 |  1300 |
| 2013-08-23 | 16458 |
| NULL       | 54996 |
| 2013-08-22 |     1 |
| NULL       |  1750 |
| 2013-08-21 |  2221 |
+------------+-------+
12 rows in set (0.36 sec)

我的结果,当我仅删除“DISTINCT”关键字时:

+------------+--------+
| record_date| dubl   |
+------------+--------+
| NULL       | 121134 |
| 2013-08-21 |   8275 |
| 2013-08-22 |  28130 |            
| 2013-08-23 |  16694 |
+------------+--------+
4 rows in set (0.30 sec)

编辑:我的MySQL版本是5.0.45。 编辑:两种情况下的结果集都是复制粘贴的。另一个奇怪的事情是我在第一个查询中没有对结果进行排序。

1 个答案:

答案 0 :(得分:0)

由于@a_horse_with_no_name建议我使用MySQL版本5.5.24中的数据导入表。一切都按预期工作。现在我在结果集中看到了不同的日期,排序工作正常。

相关问题