2011. 1. 24. 11:07 COMPUTER
[ORACLE] ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴, single-row subquery returns more than one row

ORA-01427: single-row subquery returns more than one row 또는
ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.

영어로된 에러메세지를 본사람은 'ㅅㅂ한줄이상 나와야된다는 메세지가 아니였어?!' 할수도,,
나도 그랬거덩!! ^.,^;;



서브쿼리의 출력은 한줄씩만 나와야만 셀렉트절에 표시될 수 있습니다.
해당서브쿼리의 WHERE절을 좀더 자세하게 수정하거나,
DISTINCT, GROUP BY로 해결 할 수 있습니다.


아래 코드는 이런 에러가 나는 상황을 연출한 예제입니다.

CREATE TABLE TEST1(
CODE  VARCHAR2(32),
CODE2 VARCHAR2(32),
NAME  VARCHAR2(32)
);

CREATE TABLE TEST2(
TITLE VARCHAR2(32),
CODE  VARCHAR2(32)
);

INSERT INTO TEST1 (CODE, CODE2, NAME) VALUES ('CD1', 'CDA', '안두리');
INSERT INTO TEST1 (CODE, CODE2, NAME) VALUES ('CD1', 'CDB', '안두봉');
INSERT INTO TEST1 (CODE, CODE2, NAME) VALUES ('CD2', 'CDA', '안둘');
INSERT INTO TEST1 (CODE, CODE2, NAME) VALUES ('CD2', 'CDB', '탄야');
COMMIT;

INSERT INTO TEST2 (TITLE, CODE) VALUES ('이것은 리스트입니다.', 'CD1');
INSERT INTO TEST2 (TITLE, CODE) VALUES ('나는 사람이다', 'CD2');
INSERT INTO TEST2 (TITLE, CODE) VALUES ('오늘은 뭘먹지', 'CD2');
COMMIT;


오류나는 쿼리
SELECT
TITLE,
(SELECT NAME FROM TEST1 WHERE CODE=TD2.CODE) CODE_NAME
FROM TEST2 TD2;

정상 쿼리
SELECT
TITLE,
(SELECT NAME FROM TEST1 WHERE CODE2='CDA' AND CODE=TD2.CODE) CODE_NAME
FROM TEST2 TD2;

댓글을 달아 주세요

최근에 올라온 글

최근에 달린 댓글