我在CentOS 5.1上使用MySQL 5.0.45。MySQL COUNT(DISTINCT())意外结果
SELECT DISTINCT(email) FROM newsletter
返回217259行
SELECT COUNT(DISTINCT(email)) FROM newsletter
返回180698为计数。
SELECT COUNT(*) FROM (SELECT DISTINCT(email) FROM newsletter) AS foo
返回180698为计数。
不应该所有3个查询都返回相同的值吗?
下面是通讯表的架构
CREATE TABLE `newsletter` ( `newsID` int(11) NOT NULL auto_increment, `email` varchar(128) NOT NULL default '', `newsletter` varchar(8) NOT NULL default '', PRIMARY KEY (`newsID`) ) ENGINE=MyISAM;
更新:我发现,如果我添加一个WHERE
子句第一个查询,然后我得到正确的结果。 WHERE
条款是这样的,它不会影响结果。
SELECT DISTINCT(email) FROM newsletter WHERE newsID > 0
良好的自我回答的问题! – dkretz 2008-11-10 18:54:56