1

使用 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。编辑:两种情况下的结果集都是复制粘贴的。更奇怪的是,我在第一个查询中没有对结果进行排序。

4

1 回答 1

0

正如@a_horse_with_no_name 建议的那样,我在 MySQL 版本 5.5.24 中导入了包含数据的表,一切都按预期工作。现在我在结果集中看到了不同的日期,并且排序工作得很好。

于 2013-08-23T13:43:03.533 回答