ORA-01427: single-row subquery returns more than one row 또는
ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
영어로된 에러메세지를 본사람은 'ㅅㅂ한줄이상 나와야된다는 메세지가 아니였어?!' 할수도,,
나도 그랬거덩!! ^.,^;;
서브쿼리의 출력은 한줄씩만 나와야만 셀렉트절에 표시될 수 있습니다.
해당서브쿼리의 WHERE절을 좀더 자세하게 수정하거나,
DISTINCT, GROUP BY로 해결 할 수 있습니다.
아래 코드는 이런 에러가 나는 상황을 연출한 예제입니다.
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;
오류나는 쿼리
TITLE,
(SELECT NAME FROM TEST1 WHERE CODE=TD2.CODE) CODE_NAME
FROM TEST2 TD2;
정상 쿼리
TITLE,
(SELECT NAME FROM TEST1 WHERE CODE2='CDA' AND CODE=TD2.CODE) CODE_NAME
FROM TEST2 TD2;