SELECT COUNT(DISTINCT allcolumns)的值大于SELECT COUNT(1)

时间:2017-07-28 04:03:38

标签: mysql

我在MySQL中运行以下SQL,为什么两个COUNT显示不同的结果?

SELECT COUNT(1), COUNT(DISTINCT column1, column2, column3, column4, column5) AS distinctCount FROM `parts_color`;

结果是:

  • COUNT(1):647611
  • distinctCount:647263

为什么?

3 个答案:

答案 0 :(得分:0)

您的表parts_color必须具有重复值。

SELECT COUNT(1)类似于SELECT COUNT(*),它保留所有重复值并返回计数。

在查询中使用DISTINCT时,将丢弃重复的值,因此该值小于count(1)。

答案 1 :(得分:0)

count(DISTINCT column1, column2, column3, column4, column5)

上面只会将DISTINCT应用于column1,它不会检查所有其他列(column2,column3,column4,column5)的DISTINCT, 对于COUNT(),我们只需要一列,因此请使用

COUNT(DISTINCT column1)

答案 2 :(得分:0)

您已使用带有第二个计数的distinct关键字,因此它可以消除重复值。

根据您的结果,您似乎有重复值,因此count(1)计算第1列中的所有NOT NULL值,第二个计数消除重复值。