首页 > 数据库 > mysql教程 > 为什么我的 SQL 查询计算所有行而不是单个行,如何使用 GROUP BY 修复它?

为什么我的 SQL 查询计算所有行而不是单个行,如何使用 GROUP BY 修复它?

Patricia Arquette
发布: 2025-01-18 05:36:10
原创
844 人浏览过

Why is my SQL query counting all rows instead of individual rows, and how can I fix it using GROUP BY?

SQL 查询故障排除:不正确的行计数和 GROUP BY 解决方案

您的 SQL 查询生成的行计数不准确,对所有行而不是单个行进行求和。解决方案在于在与 GROUP BY 表连接的子查询中使用 messages_aura 子句。 GROUP BY 聚合指定列中具有相同值的行,提供正确的计数。

问题与解决方案:

原来的LEFT JOINmessages_aura缺少GROUP BY子句:

<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>
登录后复制

这导致 Aura 计数不正确,因为它总计了 messages_aura 中的所有行。 添加 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_aura 中的每一行都由 AuraIDAuraStatus 唯一标识,从而获得准确的 Aura 计数。 COUNT(*) 函数正确聚合 AuraIDAuraStatus 的每个唯一组合。

以上是为什么我的 SQL 查询计算所有行而不是单个行,如何使用 GROUP BY 修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

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