Rumah >pangkalan data >tutorial mysql >Mengapa My MySQL CASE BILA Penyata Pilih Keadaan Yang Salah Apabila `harga_asas` ialah 0?

Mengapa My MySQL CASE BILA Penyata Pilih Keadaan Yang Salah Apabila `harga_asas` ialah 0?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 02:02:09907semak imbas

Why Does My MySQL CASE WHEN Statement Choose the Wrong Condition When `base_price` is 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!

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