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 中国語 Web サイトの他の関連記事を参照してください。