by 포동푸우 [SQL Query] MariaDB IF ELSE 2개 문장 1개로 병합. [2022.07.04 10:14:56]
-- 문장을 효율적으로 수정하려면, 어느 부분을 더 수정해야 할지 조건을 부탁드립니다. -- 실행 환경은 MariaDB 입니다. -- 안녕하세요.,, 아래의 2개 문장을 한번에 실행하려고, IF 문을 사용해서 아래와 같이 변경해 보았습니다. -- SQL1 UPDATE TB_APRV SET PROC_PRGM_ID = 'TEST' WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD = 6 AND SB_APRV_ORD = 1 AND ( SELECT COUNT(*) CNT FROM TB_APRV WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD IN (4,5) AND APRV_RJCT_YN IS NULL) = 0 -- SQL2 UPDATE TB_APRV SET PROC_PRGM_ID = 'TEST' WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD = 5 AND SB_APRV_ORD = (1+1) AND ( SELECT COUNT(*) CNT FROM TB_APRV WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD IN (4,5) AND APRV_RJCT_YN IS NULL) > 0 -- SQL1+2 IF (SELECT count(*) CNT FROM TB_APRV WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD IN (4,5) AND APRV_RJCT_YN IS NULL) = 0 then UPDATE TB_APRV SET PROC_PRGM_ID = 'TEST' WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD = 6 AND SB_APRV_ORD = 1 ELSE UPDATE TB_APRV SET PROC_PRGM_ID = 'TEST' WHERE APRV_DOC_ID = 'A20220704100201' AND APRV_ORD = 5 AND SB_APRV_ORD = (1+1) END IF -- 문장을 효율적으로 수정하려면, 어느 부분을 더 수정해야 할지 조건을 부탁드립니다.
-- 한 방 쿼리 -- UPDATE tb_aprv a INNER JOIN (SELECT CASE WHEN COUNT(*) = 0 THEN 6 ELSE 5 END aprv_ord , CASE WHEN COUNT(*) = 0 THEN 1 ELSE 2 END sb_aprv_ord FROM tb_aprv WHERE aprv_doc_id = 'A20220704100201' AND aprv_ord IN (4, 5) AND aprv_rjct_yn IS NULL ) b ON a.aprv_doc_id = 'A20220704100201' AND a.aprv_ord = b.aprv_ord AND a.sb_aprv_ord = b.sb_aprv_ord SET proc_prgm_id = 'TEST' ;