insert 쿼리 질문 0 5 758

by 김동욱 [Oracle 기초] [2017.11.01 10:55:34]


A 테이블에 데이터 10건

B 테이블에 데이터 5건 

중복 데이터 3건

중복되지 않는 2건의 데이터를 A 데이터에 INSERT 하고 싶은데 어떤 JOIN 을 써야되나요?

by 마농 [2017.11.01 11:25:32]

1. MINUS
2. NOT IN
3. NOT EXISTS
4. OUTER JOIN & IS NULL

INSERT INTO a(pk1, pk2, c1, c2, c3)
-- 1. MINUS
SELECT pk1, pk2, c1, c2, c3
  FROM b
 WHERE (pk1, pk2) IN (SELECT pk1, pk2 FROM b
                       MINUS
                      SELECT pk1, pk2 FROM a
                      )
;
-- 2. NOT IN
SELECT pk1, pk2, c1, c2, c3
  FROM b
 WHERE (pk1, pk2) NOT IN (SELECT pk1, pk2 FROM a)
;
-- 3. NOT EXISTS
SELECT pk1, pk2, c1, c2, c3
  FROM b
 WHERE NOT EXISTS (SELECT 1
                     FROM a
                    WHERE a.pk1 = b.pk1
                      AND a.pk2 = b.pk2
                   )
;
4. OUTER JOIN & IS NULL
SELECT b.pk1, b.pk2, b.c1, b.c2, b.c3
  FROM b
     , a
 WHERE b.pk1 = a.pk1(+)
   AND b.pk2 = a.pk2(+)
   AND a.pk1 IS NULL
;

 


by 우리집아찌 [2017.11.01 13:26:49]

아까는 없었는데 ..ㅡㅡ;


by 김동욱 [2017.11.06 11:57:45]

답변 감사드립니다.


by 우리집아찌 [2017.11.01 13:26:12]
-- 보충설명
INSERT INTO TARGET_TABLE -- 인서트할 테이블

WITH A AS (
SELECT 1 RN , 'A' VAL FROM DUAL UNION ALL
SELECT 2 , 'B' FROM DUAL UNION ALL
SELECT 3 , 'C' FROM DUAL UNION ALL
SELECT 4 , 'D' FROM DUAL UNION ALL
SELECT 5 , 'E' FROM DUAL UNION ALL
SELECT 6 , 'F' FROM DUAL UNION ALL
SELECT 7 , 'G' FROM DUAL UNION ALL
SELECT 8 , 'H' FROM DUAL UNION ALL
SELECT 9 , 'I' FROM DUAL UNION ALL
SELECT 10, 'J' FROM DUAL 
) , B AS (
SELECT 1 RN , 'A' VAL FROM DUAL UNION ALL
SELECT 2 , 'B' FROM DUAL UNION ALL
SELECT 3 , 'C' FROM DUAL UNION ALL
SELECT 4 , 'AA' FROM DUAL UNION ALL
SELECT 5 , 'BB' FROM DUAL 
)


-- 1.MINUS
SELECT VAL FROM B
 MINUS
SELECT VAL FROM A  
-- 2.NOT IN
SELECT VAL 
  FROM B 
 WHERE B.VAL NOT IN ( SELECT A.VAL FROM A )   
-- 3.NOT EXISTS
SELECT VAL 
  FROM B 
 WHERE NOT EXISTS ( SELECT 'X' FROM A WHERE A.VAL = B.VAL )   
-- 4.OUTER JOIN & IS NULL
SELECT B.VAL 
  FROM A 
       RIGHT OUTER JOIN
       B
    ON A.VAL = B.VAL
 WHERE A.VAL IS NULL








 


by 김동욱 [2017.11.06 11:57:50]

답변 감사드립니다.

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