ホームページ > データベース > mysql チュートリアル > SUM() を使用して MySQL クエリの条件付きインスタンスを正確にカウントするにはどうすればよいですか?

SUM() を使用して MySQL クエリの条件付きインスタンスを正確にカウントするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-28 09:29:11
オリジナル
876 人が閲覧しました

How to Accurately Count Conditional Instances in MySQL Queries Using SUM()?

MySQL クエリの IF 条件を使用したコメントのカウント

特定のシナリオでは、データベース テーブルから特定のインスタンスをカウントする必要があります。事前定義された条件。たとえば、表示が承認されたニュース記事に関連付けられたコメントの数をカウントする必要がある場合があります。ただし、MySQL の COUNT() 関数を使用してこのタスクを実行しようとすると、一般的な問題が発生します。

COUNT() の問題

COUNT() 関数MySQL では、指定された条件を満たす行の数を返します。ただし、承認されたコメントなどの特定のインスタンスをカウントする場合、一致する行が存在しない場合でも、デフォルト値 1 が割り当てられるため、不正確な結果が得られる可能性があります。

この問題を解決して正確なカウントを取得するには、次のことをお勧めします。 COUNT() の代わりに SUM() 関数を利用します。

を使用した解決策SUM()

SUM() 関数は、テーブル内のすべての行にわたる指定された式の値を合計することによって動作します。 IF 条件と組み合わせると、特定の基準を満たすインスタンスの数を正確にカウントできます。

たとえば、次の MySQL クエリは SUM() 関数を利用して、ニュース記事の承認されたコメントをカウントします。

SELECT
    ccc_news . * ,
    SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments
FROM
    ccc_news
    LEFT JOIN
        ccc_news_comments
    ON
        ccc_news_comments.news_id = ccc_news.news_id
WHERE
    `ccc_news`.`category` = 'news_layer2'
    AND `ccc_news`.`status` = 'Active'
GROUP BY
    ccc_news.news_id
ORDER BY
    ccc_news.set_order ASC
LIMIT 20
ログイン後にコピー

このクエリでは、SUM() 関数を使用することで、承認されたコメントの数がコメント列に正確に表示され、デフォルトの誤った割り当てが防止されます。一致するコメントがない行には値 1 が適用されます。

以上がSUM() を使用して MySQL クエリの条件付きインスタンスを正確にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート