-- 1. 그냥 Truncate 후 Insert 하면 안되나요? TRUNCATE TABLE t1; INSERT INTO t1 SELECT * FROM t2; -- 2. Delete 만 별도 수행하는 방법 DELETE FROM t1 a WHERE NOT EXISTS (SELECT 0 FROM t2 b WHERE b.id = a.id); -- 3. Merge MERGE INTO t1 a USING ( SELECT NVL(a.id, b.id) id , b.v , NVL2(b.id, 0, 1) delete_flag FROM t1 a FULL OUTER JOIN t2 b ON a.id = b.id WHERE a.id IS NULL -- Insert OR b.id IS NULL -- Delete OR a.v != b.v -- Update ) b ON (a.id = b.id) WHEN MATCHED THEN UPDATE SET a.v = b.v DELETE WHERE delete_flag = 1 WHEN NOT MATCHED THEN INSERT VALUES(b.id, b.v) ;