중복 있는 데이터의 이관 질문입니다. 0 1 1,612

by 조조맹덕 [SQL Query] [2014.10.07 15:03:25]



ㅎㅎ 여기에 다시 질문올리는게 몇년만인지 모릅니다. ㅠㅠ

간단한거인데 생각으론 간단한데 실제 하다보니 계속 안되네요.

일단 table은 2개입니다. 

이관되어야하는 테이블. 키는 
customerid. 그외 관계를 위한 컬럼 productid 란게 있습니다.

일단 관계 테이블이다 보니 customer 과는 1:1입니다. 원래는 
customer 테이블에 productid를 넣을까했는데 반대의견도 있고해서
테이블을 별도로 쪼개게 되었습니다.

첨엔 한번에 insert select 할려고 했는데 문제는

product 테이블이 customer와 1:n관계입니다.
하지만 pk는 customerid죠. 즉 productid는 n중에 1개만 들어가도 되는 상황입니다.
뭐 기왕이면 들어간 일자중 가장 마지막것이 들어가면 더 좋지만... 일단 여의치않아서..

그래서 처음에 insert select 
INSERT INTO CustomerProduct
(
CUSTOMERID,
ProductID
)
SELECT 
조인...
하다 실패하고.. 

그냥 
INSERT INTO CustomerProduct
(
CUSTOMERID
)
SELECT 
CUSTOMERID
FROM 
Customer 
했습니다.

그리고 UPDATE를 할려고 했는데요. 이것도 생각보다 잘 안되네요.
MERGE도 해볼려고 했는데 DUP KEY가 있다면서 튕겨서요. 쿼리는 아래같이..

merge into CustomerProduct a using product b 
on (b.CUSTOMERID = a.CUSTOMERID) 
when matched then update set 
 a.productID=b.productid

using쪽에 ()해서 조인해서 넣어봐도.. 여긴 nownum로 where을 걸수도 없고..


RUWNUM 이나 ROW_NUMVER() 등으로 걸어봤는데 잘 안됩니다.
커서를 돌려야하나 생각도 들고... 어떻게 간단하게 될거 같은데
잘 안되니 답답하네요 ㅠㅠ

가이드 해주시면 감사하겠습니다. 

by 조조맹덕 [2014.10.07 15:38:35]

음.. 오래전 이관 쿼리 뒤지다가..그냥

UPDATE  A
SET A.ID = (
                            SELECT B.ID
                            FROM B 
                            WHERE A.ID = B.ID 
                            AND ROWNUM <2
                          )

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