gpt4 book ai didi

mysql - 同一查询中的 COUNT DISTINCT 和 GROUP BY 错误

转载 作者:行者123 更新时间:2023-11-29 12:23:30 24 4
gpt4 key购买 nike

我有以下数据:

countryId languageUsed
1 English
1 France
2 English
2 Spanish
3 Italian
1 Russian

当我查询时:

SELECT count(DISTINCT countryId) 
FROM languages
GROUP BY countryId

我得到:

count(DISTINCT countryId)
1
1
1

而不仅仅是 3。当我删除 GROUP BY 子句时,它会给我正确的结果。

有人可以解释一下这种行为的原因吗?

最佳答案

GROUP BY 的目的是获取几行并将它们变成一行。如果是这样,它必须知道如何处理所有具有不同值的组合行。这就是为什么您想要SELECT的每个字段都有两个选项,要么将其包含在GROUP BY子句中,要么在聚合函数中使用它以便系统知道您想如何组合字段。

您还遇到了 GROUP BY 子句的严格要求。即不在 GROUP BY 子句中的每一列都必须应用一个函数,以将匹配“组”的所有记录减少为单个记录,例如 SUM MAXMINAVG 等。

如果您在 GROUP BY 子句中列出所有选定的列,则实际上是在请求从结果集中排除重复记录。这提供了与 SELECT DISTINCT 相同的效果,也消除了结果集中的重复行。

除非您非常想同时使用它们并获得所需的结果,否则您可以只使用 SUM。见下文:

 SELECT SUM(countryId) FROM 
(
SELECT COUNT(DISTINCT countryId)countryId
FROM languages
GROUP BY countryId
) AS A

<强> SEE DEMO HERE

关于mysql - 同一查询中的 COUNT DISTINCT 和 GROUP BY 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com