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