【发布时间】:2010-09-19 15:24:29
【问题描述】:
我在 CentOS 5.1 上使用 MySQL 5.0.45。
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 '', 主键(`newsID`) ) 引擎=MyISAM;更新:我发现如果我在第一个查询中添加WHERE 子句,那么我会得到正确的结果。 WHERE 子句不会影响结果。
SELECT DISTINCT(email) FROM newsletter WHERE newsID > 0
【问题讨论】:
-
我也有同样的问题,
count(DISTINCT s0_.id)返回31结果,但是DISTINCT s0_.id返回26结果,而结果中没有任何重复的id