TB_ABC 테이블이 아래와 같이 있을때,
조건 1), 2), 3)의 합집합을 구하고자 합니다.
1) A_CD = '01' AND B_CD ='KOR'
2) A_CD = '02' AND B_CD ='USD'
3) A_CD = '03'
------------------------
A_CD | B_CD | C_NAME
------------------------
01 | KOR | 홍길동
01 | USD | 홍길순
01 | USD | 홍길자
02 | KOR | 홍길식
02 | KOR | 홍길배
02 | USD | 홍길정
03 | KOR | 홍길석
03 | USD | 홍길혁
결과는 홍길동,홍길정,홍길석,홍길혁 이렇게 나오겠죠
보통 쉽게 생각할 수 있는게 아래와 같이 두가지 방법이 있는데요
(OR절 또는 UNION 사용)
이렇게 OR절 쓰던지
SELECT C_NAME
FROM TB_ABC
WHERE 1=1
AND (
(A_CD = '01' AND B_CD ='KOR')
OR (A_CD = '02' AND B_CD ='USD')
OR (A_CD = '03')
)
이렇게 UNION절 쓰던지
SELECT C_NAME
FROM TB_ABC
WHERE A_CD = '01' AND B_CD ='KOR'
UINON
SELECT C_NAME
FROM TB_ABC
WHERE A_CD = '02' AND B_CD ='USD'
UNION
SELECT C_NAME
FROM TB_ABC
WHERE A_CD = '03'
그런데 두가지 방법 다 맘에 들지 않네요
제가 간단히 표현했지만 건수가 많을때 성능도 그렇고, 퀴리의 중복도 심한거 같아서...
다른 방법은 없을까요?
굳이 선택하면 UNION이 최선인가요?
고수님들의 조언 부탁드립니다 ㅠㅠ