gpt4 book ai didi

mysql - 子查询的 group by 计数与 group by 列上的不同计数之间的差异

转载 作者:行者123 更新时间:2023-11-29 10:25:04 26 4
gpt4 key购买 nike

这两个查询是否有可能产生不同的结果?有首选吗?

SELECT COUNT(DISTINCT a.id, b.id) AS `count`
FROM a
JOIN b ON a.id = b.a_id

对比

SELECT COUNT(*) AS `count`
FROM (SELECT TRUE
FROM a
JOIN b ON a.id = b.a_id
GROUP BY a.id, b.id) g

对我来说,似乎 COUNT(DISTINCT) 是首选,因为您不处理子查询。我只是不知道是否有任何陷阱。也许与空值有关?

我不确定这是否有什么不同,但我专门询问了有关我的用例的 MySQL 的信息。

最佳答案

两者返回不同的值(至少当只有一列时)。

count(distinct) 忽略 NULL 值。因此,count(distinct NULL) 返回 0 而不是 1

group byNULL 值作为单独的行包含在内,因此它们包含在该查询中。

This rextester 说明了一列的差异。

This rextester 说明了两列的差异。

关于mysql - 子查询的 group by 计数与 group by 列上的不同计数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463087/

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