COL1,2,3,4가 유일하다고 보고 1개의 행을 가져오기 위함입니다.
AND 조건에 COL1,2,3,4가 바인드 됩니다.
COL4는 무조건 1개 이상은 존재하게 되어있습니다.
COL1 |
COL2 |
COL3 |
COL4 |
COL5 |
AA |
가가 |
11 |
A |
1 |
BB |
나나 |
22 |
A |
2 |
|
|
|
A |
3 |
CC |
다다 |
33 |
C |
4 |
DD |
라라 |
44 |
C |
5 |
|
|
|
C |
6 |
WITH TB AS
(
SELECT 'AA' AS COL1, '가가' AS COL2, '11' AS COL3, 'A' AS COL4, 1 AS COL5 FROM DUAL UNION ALL
SELECT 'BB' AS COL1, '나나' AS COL2, '22' AS COL3, 'A' AS COL4, 2 AS COL5 FROM DUAL UNION ALL
SELECT '' AS COL1, '' AS COL2, '' AS COL3, 'A' AS COL4, 3 AS COL5 FROM DUAL UNION ALL
SELECT 'CC' AS COL1, '다다' AS COL2, '33' AS COL3, 'C' AS COL4, 4 AS COL5 FROM DUAL UNION ALL
SELECT 'DD' AS COL1, '라라' AS COL2, '44' AS COL3, 'C' AS COL4, 5 AS COL5 FROM DUAL UNION ALL
SELECT '' AS COL1, '' AS COL2, '' AS COL3, 'C' AS COL4, 6 AS COL5 FROM DUAL
)
SELECT *
FROM TB
WHERE 1=1
AND COL1 = 'EE'
AND COL2 = '하하'
AND COL3 = '22'
AND COL4 = 'A'
;
이와 같을때 조건에 걸리는건 하나도 없습니다만
COL4는 무조건 1개 이상 걸리므로 3번재 레코드를 가져오고 십습니다.
현재 확보해놓은 쿼리는 4개의 조회조건 모두 걸고 리턴되는 행이 없으면 COL1,2,3는 IS NULL로 COL4는 바인드 해서 조회하려고 합니다.
더 좋은 방법이 없을까요?
SQL만으로 깔끔한 방법이 없다면 컬럼을 추가 할 수도 있습니다. |