반응형
MySQL SELECT 쿼리에서 IF 문 사용
사용하려고 합니다.IF
MySQL 선택 쿼리의 문입니다.
다음에 오류가 발생합니다.AND
첫번째가 어디인지 진술.IF
.
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() 함수는 주로 쿼리의 SELECT 부분에서 특정 조건에 따라 다른 데이터를 선택하는 데 사용하도록 되어 있지만 쿼리의 WHERE 부분에서는 사용하지 않습니다.
SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
FROM ...
WHERE ...
MySQL "select list"에서 IF 문을 사용하는 방법:
select if (1>2, 2, 3); //returns 3
select if(1<2,'yes','no'); //returns yes
SELECT IF(STRCMP('test','test1'),'no','yes'); //returns no
MySQL where 절 검색 조건 목록에서 IF 문을 사용하는 방법:
create table penguins (id int primary key auto_increment, name varchar(100))
insert into penguins (name) values ('rico')
insert into penguins (name) values ('kowalski')
insert into penguins (name) values ('skipper')
select * from penguins where 3 = id
-->3 skipper
select * from penguins where (if (true, 2, 3)) = id
-->2 kowalski
MySQL에서 "절 검색 조건을 가지는" IF 문을 사용하는 방법:
select * from penguins
where 1=1
having (if (true, 2, 3)) = id
-->1 rico
선택 목록에 사용된 열이 있는 IF 문을 사용하여 다음과 같이 결정합니다.
select (if (id = 2, -1, 1)) item
from penguins
where 1=1
--> 1
--> -1
--> 1
SQL 쿼리에 포함된 문이 "코드 냄새"가 심한 경우.불량 코드는 코드 검토 중에 "분당 WTF's"가 높습니다.이것도 그런 것들 중 하나입니다.당신의 이름이 적힌 제작물을 보게 되면 당신이 마음에 들지 않을 것입니다.
이 코드가 나에게 효과가 있는지 시험해 보세요.
SELECT user_display_image AS user_image,
user_display_name AS user_name,
invitee_phone,
(CASE WHEN invitee_status = 1 THEN "attending"
WHEN invitee_status = 2 THEN "unsure"
WHEN invitee_status = 3 THEN "declined"
WHEN invitee_status = 0 THEN "notreviwed"
END) AS invitee_status
FROM your_table
언급URL : https://stackoverflow.com/questions/8444570/using-an-if-statement-in-a-mysql-select-query
반응형
'programing' 카테고리의 다른 글
jQuery로 텍스트 내용별 옵션 선택 (0) | 2023.10.24 |
---|---|
AND() 함수를 이용한 조건부 포맷 (0) | 2023.10.24 |
WooCommerce : 상품이 품절되어 백오더를 허용하지 않는지 확인합니다. (0) | 2023.10.24 |
(ExpressJS 사용) AJAX Call 후 EJS 템플릿에서 배열을 루프하는 적절한 방법은 무엇입니까? (0) | 2023.10.24 |
도커 컨테이너가 과도하게 작동하지 않는 것에 대해 우려해야 합니까? (0) | 2023.10.24 |