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

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

DDD
发布: 2025-01-18 05:51:07
原创
278 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板