Я использую MySQL 5.0.45 на CentOS 5.1.
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