oracle多表插入
SQL> create table test_1
2 (id number,
3
name varchar(5));
Table created.
SQL> insert into test_1 values(100,'a');
1 row created.
SQL> insert into test_1 values(200,'b');
1 row created.
SQL> insert into test_1 values(300,'c');
1 row created.
SQL> insert into test_1 values(400,'d');
1 row created.
SQL> commit;
Commit complete.
SQL> create table test_2 as select * from test_1 where 1=2;
Table created.
SQL> create table test_3 as select * from test_1 where 1=2;
Table created.
SQL> select * from test_1;
ID NAME
----------
-----
100
a
200
b
300
c
400 d
SQL> select * from test_2;
no rows selected
SQL> select * from test_3;
no rows selected
SQL>
test_1表有四條資料,test_2,test_3表沒有記錄
第一種插入:無條件insert all
全表插入
SQL> insert all
2 into test_2
values(id,name)
3 into test_3 values(id,name)
4
select id,name from test_1;
8 rows created.
SQL> select * from test_2;
ID NAME
----------
-----
100
a
200
b
300
c
400 d
SQL> select * from test_3;
ID NAME
----------
-----
100
a
200
b
300
c
400 d
第二種:有條件insert all
SQL> insert all
2 when id<250 then
3
into test_2 values(id,name)
4 when id>250 then
5 into test_3 values(id,name)
6 select id,name from
test_1;
4 rows created.
SQL> select *from test_2;
ID NAME
----------
-----
100
a
200 b
SQL> select *from test_3;
ID NAME
----------
-----
300
c
400 d
執行過後將id<250的插入test_2,id>250的插入test_3
SQL> insert all
2 when id<150 then
3
into test_2 values(id,name)
4 else
5 into test_3
values(id,name)
6 select id,name from test_1;
4 rows created.
SQL> select *from test_2;
ID NAME
----------
-----
100 a
SQL> select *from test_3;
ID NAME
----------
-----
200
b
300
c
400 d
第三種:有條件insert first
SQL> insert first
2 when
id>300 then
3 into test_2 values(id,name)
4
when id>100 then
5 into test_3 values(id,name)
6 select id,name from test_1;
3 rows created.
SQL> select * from test_2;
ID NAME
----------
-----
400 d
SQL> select * from test_3;
ID NAME
----------
-----
200
b
300 c
從結果中可以看出,此種插入源表中的每條記錄只會被插入一次.test_1表中大於300的資料只有一條,即id=400的記錄,當滿足id>100,由於此條記錄已插入到test_2中,所以在test_3表中不再被插入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26937943/viewspace-1302944/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle多表插入語句Oracle
- Oracle的多表插入語句Oracle
- oracle insert all多表插入的示例Oracle
- Oracle 使用一條insert語句完成多表插入Oracle
- 【SQL】 Multi table insert 多表插入操作SQL
- 【SQL】使用一條INSERT語句完成多表插入SQL
- Oracle-多表查詢Oracle
- Oracle 多表關聯刪除Oracle
- 用insert all實現同時向多表插入資料
- ORACLE多表關聯UPDATE語句Oracle
- ORACLE多表關聯UPDATE 語句Oracle
- 多表關聯更新(mysql,oracle,postgreSQL)MySqlOracle
- Oracle多表關聯更新的語法Oracle
- Oracle\MS SQL Server的資料庫多表關聯更新UPDATE與多表更新OracleSQLServer資料庫
- [Q]怎麼實現一條記錄根據條件多表插入 zt
- oracle批量插入資料Oracle
- Mybatis批量插入Oracle、MySQLMyBatisOracleMySql
- Oracle 插入大量資料Oracle
- Oracle\MS SQL Server Update多表關聯更新OracleSQLServer
- Kettle:Oracle多表格批量同步資料=》mysqlOracleMySql
- oracle 多表連合修改----BYPASS_UJVC(轉)Oracle
- oracle觸發器~ 更新多表的問題Oracle觸發器
- ORACLE 插入空值測試Oracle
- oracle插入隨機資料Oracle隨機
- oracle和mybatis整合,批次插入OracleMyBatis
- MYSQL多表更新刪除以及和ORACLE的對比MySqlOracle
- python 插入日期資料到OraclePythonOracle
- myBatis插入oracle獲取主鍵MyBatisOracle
- oracle如何插入timestamp資料Oracle
- Oracle插入Blob資料的方法Oracle
- oracle 大資料量資料插入Oracle大資料
- oracle心得4--集合查詢@oracle中的多表連線@案例分析Oracle
- Oracle expdp匯出多表或表中的部分資料Oracle
- Oracle多表關聯更新的方式選擇, Loop or Hash update?OracleOOP
- 【Oracle】-【插入讀取順序】-插入讀取之間的順序關係Oracle
- oracle資料庫插入行更快方法Oracle資料庫
- Oracle 的 merge 更新和插入操作Oracle
- 多表查詢