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!