파라미터하나로 모든 칼럼 조회 문제..질문드립니다. 0 7 2,809

by 커피요쿠르트d [SQL Query] ANY [2013.04.30 13:27:54]


수고하십니다.

쿼리를 개선할 수 있나해서 질문드립니다.

 
WITH TEST AS (
SELECT 'AA' CODE, '0001' VALUE01 , '0002' VALUE02 , '0003' VALUE03 , '0004' VALUE04 , '0005' VALUE05 , '0006' VALUE06 , '0007' VALUE07 , '0008' VALUE08 , '0009' VALUE09 FROM DUAL UNION ALL
SELECT 'BB' CODE, '1101' VALUE01 , '1102' VALUE02 , '1103' VALUE03 , '1104' VALUE04 , '1105' VALUE05 , '1106' VALUE06 , '1107' VALUE07 , '1108' VALUE08 , '1109' VALUE09 FROM DUAL
)SELECT CODE FROM TEST 
WHERE 	VALUE01 = '0001' 
 OR VALUE02 = '0001' 
 OR VALUE03 = '0001' 
 OR VALUE04 = '0001' 
 OR VALUE05 = '0001' 
 OR VALUE06 = '0001' 
 OR VALUE07 = '0001' 
 OR VALUE08 = '0001' 
 OR VALUE09 = '0001' ;
 


위 쿼리 보시면 VALUE01~VALUE09까지의 칼럼이 있는데요.
모두 같은 형태의 자료를 담고 있습니다. 
원래는 ROW로 들어가야할 거같은데;; 열로 들어가있네요;;

문제는 조회 시 인데요.
하나의 파라미터를 받아서 모든 칼럼의 값을 조회해서 그 값이 있는 ROW를 조회합니다.

그냥 OR로 처리하면 될거 같은데요.
이게 좋은지 나쁜지, 더 좋은 방법이 있는지 없는지 몰라서 질문드립니다.

예시는 9개 칼럼으로 드렸으나 실제 칼럼은 20개가 넘습니다.

이런식으로 조회를 할 때 OR로해도 별 상관없을까요? 
다른 좋은 방법이 있을까요?

자료건수가 많은 것도 아니고 위와 같이 해도 딱히 문제있는 건 아닌데.. 궁금해서요 ㅋ

그리고 추가로..
만약..파라미터가 여러개라면..아..IN으로 하면 되는군요;;

ㅜㅜ

좋은 방법 아시면 가르침 바랍니다. ^^*
즐거운 오후 되시길 ..
by 우리집아찌 [2013.04.30 14:31:02]
-- ANY 로 해보세요..
SELECT * FROM 
( SELECT '1' a1 , '2' a2 ,'3' a3 FROM DUAL )
WHERE '1' = ANY(a1 , a2 , a3 ) 

by 커피요쿠르트d [2013.04.30 18:38:38]
정말 감사합니다!!!

매우 멋져요!! ㅋㅋㅋ

정말 멋지게 해결된거 같아요. ㅎ

by 손님 [2013.04.30 20:09:06]
오~.. 님??

짐심 대단하심

by 초록짱 [2013.04.30 15:37:43]
오호...ANY 좋네여...

by 디케이 [2013.04.30 16:02:15]
IN과 ANY 차이점이 궁금하네요...

by 우리집아찌 [2013.04.30 16:11:46]

ALL 도 해주세요..


by 커피요쿠르트d [2013.04.30 18:51:56]

요기 http://gogo.da.to/15504 

아주 잘 나와있어서 링크를 답니다.

모두 in, not in, exist, any, all 모두 복수행 연산자라는 공통점이 있으나
다른면이 있네요.


하지만 위 질문에서의 경우는 동일한 결과를 보여주네요.
왜 이상을 못했는지... ㅠㅠ

SELECT * FROM
( SELECT '1' a1 , '2' a2 ,'3' a3 FROM DUAL )
WHERE '1' in (a1 , a2 , a3 ) 



그거 말씀하신거죠?;;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입