我在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