ホームページ >データベース >mysql チュートリアル >SQL クエリが個々の行ではなくすべての行をカウントするのはなぜですか? GROUP BY を使用してこれを修正するにはどうすればよいですか?

SQL クエリが個々の行ではなくすべての行をカウントするのはなぜですか? GROUP BY を使用してこれを修正するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-18 05:36:10896ブラウズ

Why is my SQL query counting all rows instead of individual rows, and how can I fix it using GROUP BY?

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 の各行は AuraIDAuraStatus によって一意に識別されるため、正確な Aura カウントが得られます。 COUNT(*) 関数は、AuraIDAuraStatus の一意の組み合わせごとに正しく集計します。

以上がSQL クエリが個々の行ではなくすべての行をカウントするのはなぜですか? GROUP BY を使用してこれを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。