ORA-01427: single-row subquery returns more than one row
Oracle의미
단일 행을 반환할 것으로 예상된 서브쿼리가 둘 이상의 행을 반환했다. 예를 들어 등호(=) 비교의 오른쪽 서브쿼리가 여러 값을 생성한 경우.
원인
= 또는 할당이 기대되는 곳에서 여러 행을 반환하는 서브쿼리, 충분히 좁혀지지 않은 WHERE 조건, 상관 조건에서 고유하지 않은 매칭, SELECT 목록의 스칼라 서브쿼리가 여러 행을 반환.
해결 방법
서브쿼리가 단일 행을 반환하도록 범위를 좁힌다(추가 WHERE, 고유 키). 여러 값이 실제로 예상된다면 = 대신 IN을 사용한다: WHERE id IN (SELECT id FROM ...). 또는 서브쿼리에 집계(MAX, MIN)를 추가하거나 ROWNUM = 1로 한 행으로 줄인다. 먼저 서브쿼리만 단독으로 실행해 몇 행을 반환하는지 확인한다.