>  기사  >  데이터 베이스  >  MySQL SELECT 쿼리에서 IF 문을 올바르게 사용하는 방법은 무엇입니까?

MySQL SELECT 쿼리에서 IF 문을 올바르게 사용하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-28 13:31:02662검색

 How to Use IF Statements Correctly in MySQL SELECT Queries?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.