Memahami CASE..WHEN Statement dalam MySQL
Apabila bekerja dengan MySQL, CASE..WHEN statement ialah alat yang berharga untuk menilai berbilang syarat dan mengembalikan nilai yang berbeza berdasarkan syarat tersebut. Walau bagaimanapun, terdapat cara khusus untuk menggunakannya dengan betul untuk mengelakkan hasil yang tidak dijangka.
Pertimbangkan pertanyaan berikut:
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
Pertanyaan bertujuan untuk mengambil kursus dengan harga asas sifar dan menetapkan secara bersyarat nilai kepada 'calc_base_price' berdasarkan julat harga. Walau bagaimanapun, hasilnya mengembalikan '3' untuk semua baris dengan base_price 0.
Untuk membetulkannya, adalah penting untuk mengalih keluar nama lajur selepas CASE:
SELECT CASE WHEN base_price = 0 THEN 1 ... END
Ini memastikan CASE pernyataan menilai keadaan dengan betul dan mengembalikan nilai yang sesuai untuk setiap baris. Penyata CASE mempunyai dua bentuk: satu dengan nama lajur sasaran dan satu tanpa. Dalam senario ini, borang kedua, yang menggunakan syarat carian, dikehendaki.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menggunakan MySQL's CASE Dengan Betul..WHEN Kenyataan untuk Mengelakkan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!