728x90
기본적으로 CASE 문에서는 복수의 조건을 테스트할 때 OR를 사용하곤 한다. 그러나, 같은 컬럼의 값이 특정 집합에 속하는지를 검사하려면 IN 연산자를 사용하는 것이 더 간결하고 읽기 쉬웠다.
예를 들어, lm.subj_nm 값이 '국어' 또는 '국어선택학습'인지를 검사하려면 다음과 같이 OR를 사용할 수 있다:
when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' then '1'
그러나 이것은 IN을 사용하면 더 간결하게 표현할 수 있다:
WHEN lm.subj_nm IN ('국어', '국어선택학습') THEN '1'
두 쿼리는 완전히 동일한 결과를 내지만, 후자는 명확성과 가독성 면에서 더 우수하다고 생각한다. 특히 조건이 많아질수록 IN 연산자를 사용하는 것이 코드를 이해하고 유지보수하는 데 도움이 되었다.
이번엔 반대로 돌려서 상황을 봐보자.
예를 들어, '국어', '국어선택학습', '수학', '수학선택학습', '영어', '영어선택학습' 중 하나와 일치하는지 검사하려면 IN 연산자를 사용하는 것이 훨씬 더 간단하다:
WHEN lm.subj_nm IN ('국어', '국어선택학습', '수학', '수학선택학습', '영어', '영어선택학습') THEN '1'
대조적으로 OR를 사용하면 이것이 훨씬 복잡해진다:
when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' or lm.subj_nm = '수학' or lm.subj_nm = '수학선택학습' or lm.subj_nm = '영어' or lm.subj_nm = '영어선택학습' then '1'
따라서, 개인적으로는 IN 연산자를 사용하는 것이 더 간결하고 가독성이 좋았다.
728x90
SMALL
'Database & Data > MySQL' 카테고리의 다른 글
Local MySQL로 DB 서버 만들기(외부 IP에서 접속) (0) | 2023.08.26 |
---|---|
로컬 DB 공유기 포트 포워딩 하는 방법(방화벽 설정 포함) (0) | 2023.08.26 |
MySQL --login-path 옵션 이해하기 (0) | 2023.07.27 |
MySQL SQL 쿼리 성능 향상: CASE WHEN vs UNION (0) | 2023.07.26 |
MySQL 인덱스(클러스터드, 세컨더리, 커버링) 가볍게 이해하기 (0) | 2023.07.17 |