为什么mysql选择count(distinct user_id)返回错误的数字?

时间:2017-01-09 13:31:25

标签: mysql sql database

我在mysql中有一个大表。它有1300万行。

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;

结果:1​​20000

每行

user_id不为空

而且,正确的数字是120,000。为什么第一个sql输错了数字?

然后,我在hive和spark-sql中运行第一个sql,结果是120,000。

那么,这是一个mysql的bug还是可以设置一些东西来做正确的事情?

谢谢!

更新:我在另一台PC上尝试,第一个sql的结果是120,000。这次得到正确的号码.Mysql版本是5.6.26。 所以,也许这是5.7.10的错误。

1 个答案:

答案 0 :(得分:1)

当列包含在双列唯一键中时,MySQL中的 多个已知错误计数不同。

herehere