使用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。 编辑:两种情况下的结果集都是复制粘贴的。另一个奇怪的事情是我在第一个查询中没有对结果进行排序。
答案 0 :(得分:0)
由于@a_horse_with_no_name建议我使用MySQL版本5.5.24中的数据导入表。一切都按预期工作。现在我在结果集中看到了不同的日期,排序工作正常。