首页 >数据库 >mysql教程 >为什么我的 SQL 计数返回所有行而不是单个行?

为什么我的 SQL 计数返回所有行而不是单个行?

DDD
DDD原创
2025-01-18 05:51:07279浏览

Why Does My SQL Count Return All Rows Instead of Individual Rows?

SQL COUNT 故障排除:获取单个行计数

您的 SQL 查询可能会产生不正确的总行数,因为它缺少关键的 GROUP BY 子句。 该示例显示顶行的计数为 2,表明聚合存在问题。

所提供的复杂查询的核心问题在于计算Aura计数的子查询:

<code class="language-sql">LEFT JOIN
(
    select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura`
    from messages_aura
) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>

此子查询不带 GROUP BY 子句,对 messages_aura 中的所有行求和,无论 AuraIDAuraStatus。 因此,它始终返回表的总行数(在您的情况下为 2)。

解决方案是添加 GROUP BY 子句来正确分组和计数:

<code class="language-sql">LEFT JOIN
(
    select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura`
    from messages_aura
    GROUP BY `AuraID`, `AuraStatus`
) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>

此修改后的子查询按 messages_auraAuraIDAuraStatus 行进行分组,准确地计算每个组的 Aura 数。 此修正将产生预期结果 - 底行为 1,顶行为 2。

以上是为什么我的 SQL 计数返回所有行而不是单个行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn