首頁 >資料庫 >mysql教程 >為什麼我的 SQL 計數會傳回所有行而不是單行?

為什麼我的 SQL 計數會傳回所有行而不是單行?

DDD
DDD原創
2025-01-18 05:51:07279瀏覽

Why Does My SQL Count Return All Rows Instead of Individual Rows?

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 中的所有行求和,無論 AuraIDAuraStatus。 因此,它始終會傳回表格的總行數(在您的情況下為 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_auraAuraIDAuraStatus 行分組,精確計算每組的 Aura 數。 此修正將產生預期結果 - 底行為 1,頂行為 2。

以上是為什麼我的 SQL 計數會傳回所有行而不是單行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn