MySQL クエリの IF 条件によるコメント数の問題を解決する
MySQL クエリが常に最小のコメント数を返すという問題に直面しています。特定のニュース記事に対して承認されたコメントがない場合でも、1 の評価を受けます。これを修正するために、改訂されたアプローチを検討してみましょう。
クエリでは、承認されたコメントを集計するために count() 関数が使用されていますが、コメントの存在に関係なく、本質的に各行の最小値 1 が生成されます。解決策は、代わりに 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
この改訂版では、if() 内で sum() 関数を利用します。ステートメントの条件式。承認されたコメントの 1 と未承認のコメントの 0 の合計数を計算し、事実上、各ニュース記事の承認されたコメントの正確な集計を返します。
以上がMySQL で承認されたコメントを正しく数えて、最低 1 件を避けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。