ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 0 7 9,576

by 널라리 [SQL Query] [2014.11.11 11:32:40]


update CARFORM_V3_temp a
    SET (a.CARMAKER_NM, a.CARMODEL_NM) = (
                                        select   b.CNT, b.B
                                            from CARFORM_V3_temp a, temp_kim b
                                            where a.CNM=b.OBUNO
                                            and CARMAKER_NM is null
                                     )
    where exists (
                    select   b.CNT, b.B
                    from CARFORM_V3_temp a, temp_kim b
                    where a.CNM=b.OBUNO
                    and CARMAKER_NM is null
                 )
;

 

ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.

이라고 에러가 발생합니다.

어디서 무엇이 문제인지 확인부탁드립니다.

by 오라클초보 [2014.11.11 11:57:06]

update CARFORM_V3_temp a
    SET (a.CARMAKER_NM, a.CARMODEL_NM) = (
                                        select  distinct  b.CNT, b.B
                                            from CARFORM_V3_temp a, temp_kim b
                                            where a.CNM=b.OBUNO
                                            and CARMAKER_NM is null
                                     )
    where exists (
                    select   'X'
                    from CARFORM_V3_temp a, temp_kim b
                    where a.CNM=b.OBUNO
                    and CARMAKER_NM is null
                 )
;


by 널라리 [2014.11.11 13:40:23]

update CARFORM_V3_temp a
    SET (a.CARMAKER_NM, a.CARMODEL_NM) = (
                                        select  distinct b.CNT, b.B
                                            from temp_kim b
                                            where a.CNM=b.OBUNO
                                            and CARMAKER_NM is null
                                     )
    where exists (
                    select   'X'
                    from CARFORM_V3_temp a, temp_kim b
                    where a.CNM=b.OBUNO
                    and CARMAKER_NM is null
                 )
;

ora-01427 에러를 벋어나지 못하네요?

음...ㅠㅠ


by 마농 [2014.11.11 12:32:02]

서브쿼리 안 FROM 절의 carform_v3_temp a 를 제거하세요.
 - 변경전 : FROM carform_v3_temp a, temp_kim b
 - 변경후 : FROM temp_kim b


by 널라리 [2014.11.11 13:33:19]

update CARFORM_V3_temp a
    SET (a.CARMAKER_NM, a.CARMODEL_NM) = (
                                        select   b.CNT, b.B
                                            from  temp_kim b
                                            where a.CNM=b.OBUNO
                                            and CARMAKER_NM is null
                                     )
    where exists (
                    select   b.CNT, b.B
                    from  temp_kim b
                    where a.CNM=b.OBUNO
                    and CARMAKER_NM is null
                 )
;

 

위 쿼리로 돌려봤지만 ora-01427 에러는 발생으로 함더 확인해주시면 감사하겠습니다.


by 마농 [2014.11.11 13:47:21]

일단 form 절에 a 를 빼는 것은 맞습니다.

a 는 Update 절에 있는 걸 참조하는 형태입니다.

에러가 나는 것은 논리적인 오류입니다.

에러메시지 그대로 입니다.

서브쿼리에 1건만 나와야 합니다.

특정 조인키 (OBUNO) 에 대해서 서브쿼리 결과가 1건이어야만 합니다.

 


by 널라리 [2014.11.11 16:13:14]

명쾌한 답변 감사합니다.

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