Rumah >pangkalan data >tutorial mysql >Bagaimana Mengira Kejadian Bersyarat dengan Tepat dalam Pertanyaan MySQL Menggunakan SUM()?

Bagaimana Mengira Kejadian Bersyarat dengan Tepat dalam Pertanyaan MySQL Menggunakan SUM()?

Patricia Arquette
Patricia Arquetteasal
2024-11-28 09:29:11873semak imbas

How to Accurately Count Conditional Instances in MySQL Queries Using 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn