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