count(distinct col_name)与计算select distinct查询的行不同吗?

时间:2015-11-13 21:03:18

标签: mysql distinct

我在MySQL数据库中有一个包含1100万行的表。其中一列是个人ID号。人们在表格中列出了很多次,我想知道有多少个独特的个人ID号码。然后创建一个包含这些唯一数字的表格。 当我从列中计算不同的个人ID号时,我获得的数字与将其直接插入表中时的数字不同。例如:

select count(distinct person_key) from big_table;  

给了我4,074,890的计数。

然后当我尝试用它们创建一个表时,

insert into new_table select distinct person_key from big_table; 

它只创建了2,701,875行。

(另外,如果我使用查询:select count(1) from (select distinct person_key from big_table) temp;它给了我2,701,875。)

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

COUNT(DISTINCT expr,[expr ...])

     

返回具有不同非NULL expr值的行数

MySQL文档说。所以我认为person_keyNULL或重复值