database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39294 게시물 읽기
No. 39294
조회조건에 없더라도 하나의 컬럼은 가져올 수 있는 방법 문의 드려요
작성자
이환진(allgive2you)
작성일
2012-02-15 08:47
조회수
4,046

 

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만으로 깔끔한 방법이 없다면 컬럼을 추가 할 수도 있습니다.

이 글에 대한 댓글이 총 2건 있습니다.

WITH tb AS
(
SELECT 'AA' col1, '가가' col2, '11' col3, 'a' col4, 1 col5 FROM dual
UNION ALL SELECT 'BB', '나나', '22', 'A', 2 FROM dual
UNION ALL SELECT   '',     '',   '', 'A', 3 FROM dual
UNION ALL SELECT 'CC', '다다', '33', 'C', 4 FROM dual
UNION ALL SELECT 'DD', '라라', '44', 'C', 5 FROM dual
UNION ALL SELECT   '',     '',   '', 'C', 6 FROM dual
)
, tmp AS
(
SELECT *
  FROM tb
 WHERE 1=1
   AND col1 = 'EE'
   AND col2 = '하하'
   AND col3 = '22'
   AND col4 = 'A'
)
SELECT *
  FROM tmp
 UNION ALL
SELECT *
  FROM tb
 WHERE col1 IS NULL
   AND col4 = 'A'
   AND NOT EXISTS (SELECT * FROM tmp)
;

마농(manon94)님이 2012-02-15 17:09에 작성한 댓글입니다.

감사합니다.

이환진(allgive2you)님이 2012-02-16 08:35에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39298[MVIEW] on commit 옵션 문의드립니다. [1]
막둥이
2012-02-16
4000
39297칼럼의 값에 따라 ROW 자동 생성 [2]
은혜
2012-02-16
3909
39295미치겠습니다. [2]
미쳐
2012-02-15
3441
39294조회조건에 없더라도 하나의 컬럼은 가져올 수 있는 방법 문의 드려요 [2]
이환진
2012-02-15
4046
39293[질문] 범위 데이터를 ROW로 펼치기 쿼리..... [1]
호빵
2012-02-14
4080
39292v$session의 process 정보가 null인 경우는 뭔가요?
강원식
2012-02-14
3411
39291IN조건에 select사용시 INDEX를 못탑니다 [1]
김종구
2012-02-13
3929
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다