Rumah >pangkalan data >tutorial mysql >Bagaimana Mengira Kejadian Bersyarat dengan Tepat dalam Pertanyaan MySQL Menggunakan SUM()?
Mengira Komen dengan Keadaan IF dalam Pertanyaan MySQL
Dalam senario tertentu, ia menjadi perlu untuk mengira kejadian tertentu daripada jadual pangkalan data berdasarkan keadaan yang telah ditetapkan. Sebagai contoh, anda mungkin perlu mengira bilangan ulasan yang dikaitkan dengan artikel berita yang telah diluluskan untuk paparan. Walau bagaimanapun, isu biasa timbul apabila cuba menyelesaikan tugas ini menggunakan fungsi COUNT() dalam MySQL.
Masalah dengan COUNT()
Fungsi COUNT() dalam MySQL mengembalikan bilangan baris yang memenuhi syarat yang ditentukan. Walau bagaimanapun, apabila mengira kejadian tertentu, seperti ulasan yang diluluskan, ia boleh menghasilkan hasil yang tidak tepat dengan memberikan nilai lalai 1, walaupun jika tiada baris yang sepadan wujud.
Untuk menyelesaikan isu ini dan mendapatkan kiraan yang tepat, adalah dinasihatkan untuk menggunakan fungsi SUM() dan bukannya COUNT().
Penyelesaian menggunakan SUM()
Fungsi SUM() beroperasi dengan merumuskan nilai ungkapan tertentu merentas semua baris dalam jadual. Apabila digabungkan dengan keadaan IF, ia boleh mengira dengan tepat bilangan kejadian yang memenuhi kriteria tertentu.
Sebagai contoh, pertanyaan MySQL berikut memanfaatkan fungsi SUM() untuk mengira ulasan yang diluluskan untuk artikel berita:
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
Dengan menggunakan fungsi SUM(), pertanyaan ini memastikan bahawa lajur ulasan memaparkan kiraan ulasan yang diluluskan dengan tepat, menghalang penetapan nilai lalai 1 yang salah kepada baris tanpa ulasan yang sepadan.
Atas ialah kandungan terperinci Bagaimana Mengira Kejadian Bersyarat dengan Tepat dalam Pertanyaan MySQL Menggunakan SUM()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!