해당 update mysql 쿼리를 오라클로 어떻게 표현하나요? 0 4 149

by 킹오 [Oracle 기초] [2020.07.31 09:45:36]


안녕하세요.

질문이 있어 글 올립니다

해당 소스는

SELECT된 BTABLE의 값을 ATABLE에 UPDATE하는 MYSQL 쿼리입니다

이 쿼리를 오라클로 어찌 처리해야 할지 문법을 찾아봐도 계속 에러가 나 질문 올립니다

 

UPDATE 
    ATABLE A
    , (SELECT 
        ID
        , NAME
        , PASSWORD
     FROM BTABLE) B
SET 
    A.ID = B.ID
    , A.NAME = B.NAME
    , A.PASSWORD = B.PASSWORD
WHERE A.ID = B.ID 

 

 

MYSQL에서 BTABLE을 SELECT하는 부분이 있는데 

오라클에선 SELECT하는 부분을 어디에 넣어줘야 할까요?

by pajama [2020.07.31 10:06:42]

UPDATE 절에 조인하고 나서 SET절에서 매핑을 하면 되는데, 여기서는 ID 컬럼이 PK여야 한다고 하네요.

UPDATE (SELECT A.ID A_ID, 
               A.NAME A_NAME, 
               A.PASSWORD A_PASSWORD, 
               B.ID B_ID, 
               B.NAME B_NAME, 
               B.PASSWORD B_PASSWORD 
        FROM atable A , (SELECT ID, NAME, PASSWORD FROM btable) B 
        WHERE A.ID = B.ID ) t
SET t.A_ID=t.B_ID
    , t.A_NAME = t.B_NAME
    , t.A_PASSWORD = t.B_PASSWORD


by 킹오 [2020.07.31 10:57:09]

감사합니다. 시도해보겠습니다 


by 마농 [2020.07.31 10:58:13]
-- 1. 서브쿼리 방식
UPDATE atable a
   SET (name, password) = (SELECT name, password FROM btable b WHERE b.id = a.id)
 WHERE EXISTS (SELECT 1 FROM btable b WHERE b.id = a.id)
;
-- 2. MERGE
MERGE INTO atable a
USING btable b
ON (b.id = a.id)
WHEN MATCHED THEN
  UPDATE
     SET name     = b.name
       , password = b.password
;
-- 3. 조인 뷰 방식
UPDATE (SELECT a.name
             , a.password
             , b.name     nm
             , b.password pw
          FROM atable a
             , btable b
         WHERE b.id = a.id
        )
   SET name     = nm
     , password = pw
;
-- http://www.gurubee.net/article/79308

 


by 킹오 [2020.07.31 12:12:27]

감사합니다!

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