Rumah >pangkalan data >tutorial mysql >Mengapa My MySQL CASE BILA Penyata Pilih Keadaan Yang Salah Apabila `harga_asas` ialah 0?
Menggunakan CASE..WHEN Statement Betul dalam MySQL
Dalam MySQL, pernyataan CASE..WHEN membenarkan anda menilai keadaan yang berbeza dan kembalikan hasil tertentu berdasarkan setiap syarat. Walau bagaimanapun, adalah penting untuk menggunakannya dengan betul untuk mengelakkan keputusan yang tidak dijangka.
Soalan:
Apabila melaksanakan CASE..WHEN pernyataan untuk mengambil rekod dengan harga_asas ialah 0, mengapa syarat dengan nilai 3 dipilih dan bukannya syarat pertama, walaupun nilai yang ditentukan adalah 0?
Jawapan:
Masalahnya terletak pada sintaks pernyataan CASE. Dalam pertanyaan yang disediakan:
SELECT CASE course_enrollment_settings.base_price WHEN course_enrollment_settings.base_price = 0 THEN 1 WHEN course_enrollment_settings.base_price < 101 THEN 2 WHEN course_enrollment_settings.base_price > 100 AND course_enrollment_settings.base_price < 201 THEN 3 ELSE 6 END AS 'calc_base_price', course_enrollment_settings.base_price FROM course_enrollment_settings WHERE course_enrollment_settings.base_price = 0
penyataan menilai keadaan dan mengembalikan keadaan padanan pertama. Walau bagaimanapun, sintaks tidak betul kerana nama lajur course_enrollment_settings.base_price diulang serta-merta selepas penyata CASE. Ini membawa kepada pernyataan yang membandingkan keputusannya sendiri dengan syarat yang lain, menyebabkan 3 syarat sentiasa dipilih.
Untuk menyelesaikan isu, alih keluar nama lajur dari titik itu:
SELECT CASE WHEN course_enrollment_settings.base_price = 0 THEN 1 ... END
Pernyataan CASE kini menilai keadaan dengan betul tanpa pengulangan yang tidak perlu, memastikan hasil yang dijangkakan.
Atas ialah kandungan terperinci Mengapa My MySQL CASE BILA Penyata Pilih Keadaan Yang Salah Apabila `harga_asas` ialah 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!