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中文網其他相關文章!