2017-01-09 164 views
4

我在mysql中有一個大表,它有1300萬行。爲什麼mysql select count(distinct user_id)返回錯誤的數字?

Mysql版本是5.7.10。

表如下結構:

create table table_name ( 
    user_id varchar(20) not null,  
    item_id varchar(20) not null 
); 

1.第一個SQL是:

select count(distinct user_id) from table; 

結果:760000

2.第二SQL是:

select count(1) from (select user_id from table group by user_id) a; 

結果:120000

user_id是不爲每一行空

而且,正確的數字是120,000。爲什麼第一個sql得到錯誤的數字?

然後,我運行配置單元和spark-sql中的第一個sql,結果是120,000。

那麼,這是一個MySQL的錯誤或東西可以設置使事情正確嗎?

謝謝!

更新:我嘗試另一臺PC上,第一個SQL的結果是120,000.This時間得到正確的number.Mysql版本是26年6月5日。 所以,也許這是一個5.7.10的錯誤。

+2

已經有這些缺陷的1-2過去[例如這一個](http://bugs.mysql.com/bug.php?id=70038)。也許是另一個類似的錯誤和/或迴歸的例子? –

+0

MyISAM或InnoDB? – Strawberry

+0

他們都嘗試過。起初,它是InnoDB,然後我改爲MyISAM。第一個sql的結果總是錯誤的。 –

回答

0

There is當一列包括在兩列唯一鍵中時,MySQL中的多個已知錯誤計數不同。

herehere