*** where 안에 select... 여러개 값을 가질수 있으므로 in, exists, any를 써야한다는 내용...
where안에 select좀 풀어주실분? | General Discussions (일반 사항) |
2010-09-09 오후 7:36:41 |
|
자유시대 |
번호: 8448 추천:0 / 읽음:128 |
select * from OdrInf od where od.OdrChtNum = (Select o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉 od.OdrChtNum = o.OcmChtNum From ocminf o join pbsinf p on o.ocmchtnum = p.pbschtnum where o.ocmacpdtm like '200804%') --2008년04월의 o.OcmChtNum을 모두 가져옴니다
에러내용
메시지 512, 수준 16, 상태 1, 줄 2 하위 쿼리에서 값을 둘 이상 반환했습니다. 하위 쿼리 앞에 =, !=, <, <=, >, >= 등이 오거나 하위 쿼리가 하나의 식으로 사용된 경우에는 여러 값을 반환할 수 없습니다.
정리해서 말하자면 2008년04월의 o.OcmChtNum 다가져와서 od.OdrChtNum = o.OcmChtNum 차트넘버같은거 다 가져올려면
어떻게해야하나요? |
|
| |
|
 |
[채택답변] IN
|
0
 |
2010-09-10 오전 7:47:42 | |
질문자 인사 : |
친절한 답변 감사드려요~^^ | |
|
|
(Select o.OcmChtNum -- 이 구문에서 여러 값이 반환되는데 '=' 로 처리하고 있어서 발생합니다.
로직을 정확히 잘 모르겠지만 여러 값이 반환되므로 하나의 값만 반환되게 하거나
'=' 대신에 IN 이나 Exists 구문으로 변경할 수 있습니다.
where od.OdrChtNum IN (Select o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉 od.OdrChtNum = o.OcmChtNum
| | | |
| |
[답변]IN  |
2010-09-09 오후 9:48:17 |
(Select o.OcmChtNum -- 이 구문에서 여러 값이 반환되는데 '=' 로 처리하고 있어서 발생합니다.
로직을 정확히 잘 모르겠지만 여러 값이 반환되므로 하나의 값만 반환되게 하거나
'=' 대신에 IN 이나 Exists 구문으로 변경할 수 있습니다.
where od.OdrChtNum IN (Select o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉 od.OdrChtNum = o.OcmChtNum
|
|
| | |
| |
[답변]ㅇㅇ |
2010-09-10 오전 9:54:20 |
쿼리 변경없이 하실려면
앞에 저거 하나 붙이셔도 됨
select * from OdrInf od where od.OdrChtNum = any(Select o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉 od.OdrChtNum = o.OcmChtNum From ocminf o join pbsinf p on o.ocmchtnum = p.pbschtnum where o.ocmacpdtm like '200804%') --2008년04월의 o.OcmChtNum을 모두 가져옴니다
| | | |