oracle資料庫中批量把一張表里面的資料插入到不同的表中的方法(insert first into | insert all into)
準備環境
1.oracle資料庫自帶的scott下的用戶表
2.跟emp表表結構相同的兩張表,表名我定義為emp_a,emp_b
建表:
create table emp_a as select * from emp where 1 > 2; -- 只要表結構,不要表資料
create table emp_b as select * from emp where 1 > 2; -- 只要表結構,不要表資料
EMP表資料–

用法決議
insert first into: 這種方式表示要把資料分別插入到不同的表中,從上往下第一張表匹配成功的資料在下面的表中不會再進行二次匹配
-- 把emp表中部門大于等于30的資料插入到emp_a表中 --把部門大于等于20的資料插入到emp_b表中
insert first
when deptno >= 30 THEN
into emp_a
when deptno>= 20 then
into emp_b
select * from emp;
執行代碼后emp_a表資料

執行代碼后emp_b表資料

決議:由于使用的是first,在第一次成功匹配到部門30的資料并且插入到emp_a表中,第二次匹配deptno>=20的時候由于30部門的資料已經匹配到e m p_a表中,不會進行二次匹配,所以emp_a表中只有20 部門的資料
繼續往下說insert all into的用法
首先清空emp_a emp_b表中的資料
truncate table emp_a;
truncate table emp_b;
insert all into: 這種方式表示要把資料分別插入到不同的表中,從上往下第一張表匹配成功的資料在后面的表中如果滿足條件的話也會進行匹配
-- 把emp表中部門大于等于30的資料插入到emp_a表中 --把部門大于等于20的資料插入到emp_b表中
insert all
when deptno >= 30 THEN
into emp_a
when deptno>= 20 then
into emp_b
select * from emp;
emp_a表資料

emp_b表資料

思維導圖

注:由于樓主表達能力有限,表達不清晰之處敬請諒解,可私下與樓主進行溝通!
2020-09-13 第一篇博客
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/34777.html
標籤:其他
