我在MySQL中运行以下SQL,为什么两个COUNT
显示不同的结果?
SELECT COUNT(1), COUNT(DISTINCT column1, column2, column3, column4, column5) AS distinctCount FROM `parts_color`;
结果是:
COUNT(1)
:647611 distinctCount
:647263 为什么?
答案 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值,第二个计数消除重复值。