MySQL SELECT 쿼리에서 IF 문 사용
이 질문에서 사용자는 MySQL SELECT 쿼리 내에서 IF 문을 활용하려고 시도하지만 다음과 같은 문제가 발생합니다. 오류. 문제를 이해하고 올바른 접근 방식을 제공하기 위해 MySQL에서 IF 문의 목적과 제한 사항을 살펴보겠습니다.
WHERE 절에서 IF 문의 잘못된 사용
IF 문을 사용하여 WHERE 절의 흐름을 제어하려고 하면 오류가 발생합니다. MySQL에서 IF 문은 주로 쿼리의 SELECT 부분에서 조건부로 데이터를 선택하는 데 사용됩니다. WHERE 조건을 만족하는 행을 판별하는 데 사용할 수 없습니다.
SELECT 쿼리의 IF 문에 대한 올바른 구문
WHERE 절에서 IF 문을 사용하는 대신, SELECT 문 내에서 조건식을 사용하여 특정 기준에 따라 다른 값을 선택할 수 있습니다. 예:
SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS FROM ... WHERE ...
이 예에서는 IF() 함수를 사용하여 SELECT 절 내의 JQ.COURSE_ID 값을 기반으로 다른 결과를 선택합니다.
다시 작성 쿼리
오류를 수정하려면 SELECT 부분 내에서 조건식을 사용하도록 쿼리를 다시 작성해야 합니다. 다음 수정된 쿼리는 동일한 논리를 수행합니다.
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;
SELECT 절 내에서 CASE 표현식을 사용하면 쿼리는 WHERE 절에 IF 문이 없어도 조건을 올바르게 평가하고 적절한 값을 선택합니다.
위 내용은 MySQL SELECT 쿼리에서 IF 문을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!