SQL 查询故障排除:不正确的行计数和 GROUP BY
解决方案
您的 SQL 查询生成的行计数不准确,对所有行而不是单个行进行求和。解决方案在于在与 GROUP BY
表连接的子查询中使用 messages_aura
子句。 GROUP BY
聚合指定列中具有相同值的行,提供正确的计数。
问题与解决方案:
原来的LEFT JOIN
到messages_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
中的每一行都由 AuraID
和 AuraStatus
唯一标识,从而获得准确的 Aura
计数。 COUNT(*)
函数正确聚合 AuraID
和 AuraStatus
的每个唯一组合。
以上是为什么我的 SQL 查询计算所有行而不是单个行,如何使用 GROUP BY 修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!