MySQL クエリの IF 条件によるカウント
目的は、ニュース記事の承認されたコメントの数を取得することです。ただし、現在のクエリでは、特定の記事にコメントが存在しない場合でも、コメント列の最小値 1 が返されます。
この問題を解決するには、count() 関数を 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() 関数は、すべての TRUE 式を 1 に評価し、FALSE 式を 0 に評価し、効果的に結果を返します。承認されたコメントの総数。
この更新されたクエリでは、各ニュース記事がコメントを承認したかどうかを示す正確な数が提供されるようになりました。
以上がSUM() を使用して MySQL で承認されたコメントを正確に数える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。