Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Menggunakan Pernyataan IF dengan Betul dalam Pertanyaan SELECT MySQL?

Bagaimana Menggunakan Pernyataan IF dengan Betul dalam Pertanyaan SELECT MySQL?

DDD
DDDasal
2024-10-28 13:31:02662semak imbas

 How to Use IF Statements Correctly in MySQL SELECT Queries?

Menggunakan IF Statement dalam MySQL SELECT Queries

Dalam soalan ini, pengguna cuba menggunakan pernyataan IF dalam pertanyaan MySQL SELECT tetapi menemui satu kesilapan. Untuk memahami isu ini dan menyediakan pendekatan yang betul, mari kita mendalami tujuan dan batasan penyataan IF dalam MySQL.

Penggunaan Penyataan IF yang Salah dalam Klausa WHERE

The ralat timbul daripada percubaan menggunakan pernyataan IF untuk mengawal aliran klausa WHERE. Dalam MySQL, pernyataan IF digunakan terutamanya dalam bahagian SELECT pertanyaan untuk memilih data secara bersyarat. Ia tidak boleh digunakan untuk menentukan baris yang memenuhi syarat WHERE.

Sintaks yang Betul untuk Pernyataan IF dalam SELECT Queries

Daripada menggunakan pernyataan IF dalam klausa WHERE, anda boleh menggunakan ungkapan bersyarat dalam pernyataan SELECT untuk memilih nilai yang berbeza berdasarkan kriteria tertentu. Contohnya:

SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
FROM ...
WHERE ...

Dalam contoh ini, fungsi IF() digunakan untuk memilih hasil yang berbeza berdasarkan nilai JQ.COURSE_ID dalam klausa SELECT.

Menulis semula Pertanyaan

Untuk membetulkan ralat, pertanyaan hendaklah ditulis semula untuk menggunakan ungkapan bersyarat dalam bahagian SELECT. Pertanyaan yang diubah suai berikut mencapai logik yang sama:

SELECT J.JOB_ID,E.COMPANY_NAME,J.JOB_DESC,JT.JOBTYPE_NAME,J.COMPENSATION,ST.STATE_NAME,MC.METRO_CITY_NAME,I.INDUSTRY_NAME,
 J.JOB_CONTACT_PERSON,J.DT_INSRT,J.JOB_TITLE,J.JOB_EXP_DATE,
 CASE
 WHEN JQ.COURSE_ID=0 THEN
    CASE
    WHEN JQ.DEGREE_ID=0 THEN J.SKILLS
    ELSE JQ.DEGREE_ID
    END
 ELSE
    CASE
    WHEN JQ.DEGREE_ID=0 THEN J.SKILLS
    ELSE JQ.DEGREE_ID
    END
 END AS Conditional_Column
 FROM JOBS J 
 JOIN EMPLOYER E ON J.COMPANY_ID=E.COMPANY_ID 
 JOIN LOOKUP_JOBTYPE JT ON J.JOB_TYPE=JT.JOBTYPE_ID
 JOIN LOOKUP_STATE ST ON J.STATE_ID=ST.STATE_ID
 JOIN JOBS_LOCATION JL ON J.JOB_ID=JL.JOB_ID
 JOIN LOOKUP_METRO_CITY MC ON JL.METRO_CITY_ID=MC.METRO_CITY_ID
 JOIN LOOKUP_INDUSTRY I ON J.INDUSTRY_ID=I.INDUSTRY_ID 
 JOIN JOBS_QUALIFICATION JQ ON J.JOB_ID=JQ.JOB_ID 
 JOIN LOOKUP_DEGREE_QUALIFICATION LDQ ON LDQ.QUALIFICATION_ID = JQ.QUALIFICATION_ID
 WHERE  J.ACTIVE='Y' AND J.DT_INSRT > COALESCE(pEmailSntDt,DATE_SUB(SYSDATE(),INTERVAL 4 DAY))                        
GROUP BY J.JOB_ID ORDER BY J.DT_INSRT DESC;

Dengan menggunakan ungkapan CASE dalam klausa SELECT, pertanyaan menilai keadaan dengan betul dan memilih nilai yang sesuai tanpa memerlukan pernyataan IF dalam klausa WHERE.

Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan IF dengan Betul dalam Pertanyaan SELECT MySQL?. 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