DISTINCT多列是否与CONCAT类似,使其独一无二?

问题描述 投票:-1回答:1

我想了解DISTINCT之间的行为:

COUNT(DISTINCT t1.id, t1.surcharge_value) AS surcharge_case,

  COUNT(
    DISTINCT (
      CASE WHEN t1.surcharge_value != '0.00' THEN CONCAT(t1.id,"_",t1.surcharge_value) END
    )
  ) AS surcharge_case,

第一个查询是否使用它自己的CONCAT,所以它最终会像这样。例如:id1surcharge_value5.00;所以它成为15.00

如果我从第二个查询中删除下划线; CONCAT会像第一个查询一样吗?

提前致谢。

mysql count distinct case-when
1个回答
0
投票

第一个计算元组t1.id,t1.surcharge_value的distinct(非null)值

仅当条件WHEN t1.surcharge_value!='0.00'为TRUE时,第二个才计算distinct(非null)值,因为在这种情况下返回一个字符串 在其他情况下返回null并且不计算此值

在你的样本中,第一个retunr 1(不同的1,5.00)意味着行的数字,而元组不为空在第二个你检查一个字符串和一个数字5.00!='0.00'在这种情况下总是!=和 第二次返回1,因为CONCAT(t1.id,“_”,t1.surcharge_value)始终为NOT NULL的值独立

但是对于值(1,5.00),(1,0.00)

第一次返回2次,第二次返回1次

只有当additional_value的任何值为!=来自'0.00'时,删除“_”才会产生相同的结果

© www.soinside.com 2019 - 2024. All rights reserved.