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
中的所有行求和,无论 AuraID
或 AuraStatus
。 因此,它始终返回表的总行数(在您的情况下为 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_aura
和 AuraID
对 AuraStatus
行进行分组,准确地计算每个组的 Aura
数。 此修正将产生预期结果 - 底行为 1,顶行为 2。
以上是为什么我的 SQL 计数返回所有行而不是单个行?的详细内容。更多信息请关注PHP中文网其他相关文章!