update, merge 문 0 2 1,699

by hclee [SQL Query] oracle [2020.05.20 17:00:38]


안녕하십니까 sql 공부를 하고있는 왕초보 학생입니다. 

TEST_COMP_NA 테이블 데이터 입니다. 

TEST_ACCOUNT_NO 테이블 데이터 입니다. (값은 랜덤함수를 이용해 랜덤값으로 줬습니다.)

 

이 두개의 테이블을 조인해서 TEST_ACCOUNT_NO 테이블에 있는 ACCOUNT_NO컬럼 데이터를  TEST_COMP_NA 테이블 ACCOUNT_NO 컬럼에 데이터를 업데이트 하고싶습니다. 

UPDATE 문 또는 MERGE를 이용해서 데이터를 입력할수 있다는데 어떻게 해야하는지 감이 안잡혀서 질문올립니다. 

UPDATE 문 , MERGE문으로 알려주시면 감사합니다. 

MERGE INTO TEST_COMP_NA   AS 'A'    --UPDATE 나 INSERT 할 TABLE명을 입력
USING TEST_ACCOUNT_NO AS 'B'      --조회? 데이터?
ON              --조인조건
(A.ACCOUNT_NO = B.ACCOUNT_NO)   
WHEN MATCHED THEN       --일치 안 되는 경우 INSERT를 한다.
UPDATE SET A.ACCOUNT_NO = B.ACCOUNT_NO --ON절에 사용한 컬럼은 UPDATE가 불가능?

제가 직접 쳐본 쿼리입니다. 점점 산으로 가는 기분이라 고수님들의 지식이 필요합니다. 

by 춘 [2020.05.20 20:23:28]

TEST_COMP_NA 테이블과 TEST_ACCOUNT_NO 테이블에서

JOIN 을 할 KEY 컬럼이 있긴 한가요?

예를 들어, 

TEST_COMP_NA 테이블에 ACCOUNT_NO 컬럼 값을 UPDATE 하려면

TEST_COMP_NA 테이블의 COMP_NA 컬럼과 TEST_ACCOUNT_NO 테이블에 COMP_NA 컬럼이

있어야 JOIN 을 통해 ACCOUNT_NO 값을 TEST_COMP_NA 테이블에 UPDATE 가 가능합니다.


by 마농 [2020.05.20 21:14:47]
MERGE INTO test_comp_na m
USING
(
SELECT a.comp_na
     , b.account_no
  FROM (SELECT ROWNUM rn, comp_na    FROM test_comp_na   ) a
     , (SELECT ROWNUM rn, account_no FROM test_account_no) b
 WHERE a.rn = b.rn
) s
ON (m.comp_na = s.comp_na)
WHEN MATCHED THEN
UPDATE SET m.account_no = s.account_no
;

 

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