반응형
MySQL 선택 쿼리에서 IF
문을 사용하려고합니다.
첫 번째 IF
가있는 AND
문 다음에 오류가 발생합니다.
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,J.SKILLS
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))
AND
IF(JQ.COURSE_ID=0)
THEN
IF(JQ.DEGREE_ID=0)
THEN J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
END IF
ELSE
JQ.COURSE_ID=pCourseId OR IF(JQ.DEGREE_ID=0)
THEN
J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
END IF
END IF
GROUP BY J.JOB_ID ORDER BY J.DT_INSRT DESC;
왜 이것이 작동하지 않으며 MySQL 쿼리에서 IF 문을 수행하는 적절한 방법은 무엇입니까?
해결 방법
사용중인 IF / THEN / ELSE 구문은 저장 프로 시저 및 함수에서만 유효합니다. IF () 함수를 사용하여 이와 같이 WHERE 절의 흐름을 제어 할 수 없기 때문에 쿼리를 재구성해야합니다.
쿼리에서 사용할 수있는 IF () 함수는 주로 쿼리의 WHERE 부분에서 사용되는 것이 아니라 특정 조건에 따라 다른 데이터를 선택하기 위해 쿼리의 SELECT 부분에서 사용됩니다.
SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
FROM ...
WHERE ...
참조 페이지 https://stackoverflow.com/questions/8444570
반응형
'MySql' 카테고리의 다른 글
MySQL mysql 데이터베이스가 있는지 확인하는 방법 (0) | 2020.09.26 |
---|---|
MySQL mysql 외래 키 제약 조건이 잘못 형성된 오류 (0) | 2020.09.26 |
MySQL에서 열이 비어 있는지 null인지 어떻게 확인합니까? (0) | 2020.09.25 |
MySQL 서버와의 연결이 끊어졌습니다. 시스템 오류 : 111 (0) | 2020.09.25 |
MySQL Mysql delete with subquery (0) | 2020.09.25 |
댓글