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개 이상의 행이 리턴된다는 오류가 뜹니다ㅠㅠ
오류 메시지 그대로 입니다.
하나의 이름에 대해 같은 이름을 가진 행이 1개 뿐이어야 하는데. 여러개가 나온다는 것이죠.
하나의 코드를 여러개의 코드값으로 업데이트 한다는게 말이 안되죠.
중복된 이름이 존재하는지? 확인해 보세요.
SELECT name
, COUNT(*) cnt
FROM line
GROUP BY name
HAVING COUNT(*) > 1
;
말씀대로 여러개가 있네요ㅎㅎ 답변 감사합니다!
SELECT NAME, COUNT(1) AS CNT FROM LINE GROUP BY NAME HAVING COUNT(1) > 1
이 쿼리를 돌려서 결과값이 나온다면 UPDATE 를 위한 서브쿼리가 2개 이상의 값을 출력하는 형태여서 에러가 나는 것입니다.
서브쿼리의 값이 단일결과값이 나오도록 조정 해야 할듯 하네요.
넵넵!! 답변 감사합니다!! 2개이상인 값이 많네요