오라클 update시 에러 0 4 2,586

by 배우자아 [DB 기타] [2023.01.11 11:03:05]


1. AIR DB

AIR_NM AIR_CD
Air Incheon  
Korean Air  
Korean Air  

2. LINE DB

NAME CD
Air Incheon AIH
Korean Air KAL

두 DB가 있는데 AIR_CD에 CD를 UPDATE 하고 싶습니다.

위처럼 AIR_NM이 같은게 많은데 한번에 UPDATE 하는 방법을 알고싶습니다ㅠ 

UPDATE
    AIR A
SET
    A.AIR_CD = (
    SELECT
        B.CD
    FROM
        LINE B
    WHERE
        RTRIM(A.AIR_NM) = B.NAME);

이렇게 하면 단일 행 하위 질의에 2개 이상의 행이 리턴된다는 오류가 뜹니다ㅠㅠ 

 

by 마농 [2023.01.11 11:24:13]

오류 메시지 그대로 입니다.
하나의 이름에 대해 같은 이름을 가진 행이 1개 뿐이어야 하는데. 여러개가 나온다는 것이죠.
하나의 코드를 여러개의 코드값으로 업데이트 한다는게 말이 안되죠.
중복된 이름이 존재하는지? 확인해 보세요.
 

SELECT name
     , COUNT(*) cnt
  FROM line
 GROUP BY name
HAVING COUNT(*) > 1
;

 


by 배우자아 [2023.01.11 13:07:37]

말씀대로 여러개가 있네요ㅎㅎ 답변 감사합니다!


by 우주민 [2023.01.11 11:25:06]
SELECT NAME, COUNT(1) AS CNT
FROM LINE 
GROUP BY NAME
HAVING COUNT(1) > 1 

이 쿼리를 돌려서 결과값이 나온다면 UPDATE 를 위한 서브쿼리가 2개 이상의 값을 출력하는 형태여서 에러가 나는 것입니다.

서브쿼리의 값이 단일결과값이 나오도록 조정 해야 할듯 하네요.


by 배우자아 [2023.01.11 13:08:14]

넵넵!! 답변 감사합니다!! 2개이상인 값이 많네요

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