是這樣的,我有表A,現在有個select 出來的集合B,還有表C,(因為insert目標表是2個,所以不能用merge into ps:或者哪個大牛有好辦法。。求教。)我需要用表A的資料跟集合B資料, 根據欄位a,b做判斷(where A.a=B.a and A.b=B.b),如果表A有這條記錄就insert 到表C,如果沒有這個記錄,就Insert到表A, 求教各位大牛 Insert all怎么寫。。剛接觸oracle 2天。希望大家能教教我。
uj5u.com熱心網友回復:
存盤程序寫吧思路是,定義一個游標接收你的集合
回圈游標,獲取物件并判斷插入到哪個表
uj5u.com熱心網友回復:
首先A表的插入: merge into A using B on (A.a=B.a and A.b=B.b) when not matched insert A ...然后進行C表的插入:insert into C select * from A,B where A.a=B.a and A.b=B.b
uj5u.com熱心網友回復:
類似2樓做法,微調。。。
uj5u.com熱心網友回復:
先插入C表insert into C表
select b表欄位
from B表
where exists (select A表.欄位a
from A表
where A表.a=B表.a and A表.b=B表.b)
插入A表
insert into A表
select b表欄位
from B表
where not exists (select A表.欄位a
from A表
where A表.a=B表.a and A表.b=B表.b)
uj5u.com熱心網友回復:
我的方法可以解決你的問題,已經經過了測驗。清單如下:
create table a(a varchar2(10),b varchar2(10),c varchar2(10));
create table b(a varchar2(10),b varchar2(10),c varchar2(10));
create table c(a varchar2(10),b varchar2(10),c varchar2(10));
insert into a(a,b,c) values(1,2,1);
insert into a(a,b,c) values(1,3,1);
insert into b(a,b,c) values(1,2,2);
insert into b(a,b,c) values(1,4,2);
commit;
select * from a;
select * from b;
select * from c;
insert all
when c4 is not null then
into c (a,b,c) values(c1,c2,c3)
else
into a (a,b,c) values(c1,c2,c3)
select b.a as c1,b.b as c2,b.c as c3,a.a as c4
from B left join A on A.a=B.a and A.b=B.b;
select * from a;
select * from c;
uj5u.com熱心網友回復:
剛才還試了下merge 陳述句,它不能處理兩個insert陳述句轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82496.html
標籤:開發
上一篇:Orcal陳述句查詢
下一篇:資料匯入,可以直接復制檔案夾嗎?
