我正在 Oracle數據庫10g企業版發佈10.1.0.5.0 - PROD。 我想將m2中的數據合併到m1中。我希望看到3個記錄在 M1在合併後,一個用於「C」爲4的可耐特,一個用於「A」爲1 ,一個用於「B」爲1。我的Oracle合併不起作用
一個耐特一個耐特但我得到了一切。就好像沒有檢查更新或插入發生。
見下文。
最好的問候,
菲爾
SQL> desc m1;
Name Null? Type
----------------------------------------- -------- ----------------------------
K VARCHAR2(6)
V VARCHAR2(6)
KNT NUMBER(4)
SQL> desc m2;
Name Null? Type
----------------------------------------- -------- ----------------------------
K VARCHAR2(6)
V VARCHAR2(6)
KNT NUMBER(4)
SQL> select * from m1;
no rows selected
SQL> select * from m2;
K V KNT
------ ------ ----------
a aaa 0
b bbb 0
c ccc 0
c ccc 0
c ccc 0
a aaa 0
b bbb 0
c ccc 0
c ccc 0
SQL> merge into m1 d
2 using (select k,v,knt from m2) s
SQL> desc m1;
Name Null? Type
----------------------------------------- -------- ----------------------------
K VARCHAR2(6)
V VARCHAR2(6)
KNT NUMBER(4)
SQL> desc m2;
Name Null? Type
----------------------------------------- -------- ----------------------------
K VARCHAR2(6)
V VARCHAR2(6)
KNT NUMBER(4)
SQL> select * from m1;
no rows selected
SQL> select * from m2;
K V KNT
------ ------ ----------
a aaa 0
b bbb 0
c ccc 0
c ccc 0
c ccc 0
a aaa 0
b bbb 0
c ccc 0
c ccc 0
SQL> merge into m1 d
2 using (select k,v,knt from m2) s
3 on (d.k = s.k)
4 when matched then
5 update set d.knt = d.knt+1
6 when not matched then
7 insert(d.k,d.v,d.knt)
8 values(s.k,s.v,s.knt)
9 ;
SQL> select * from m1;
K V KNT
------ ------ ----------
b bbb 0
b bbb 0
c ccc 0
c ccc 0
c ccc 0
c ccc 0
c ccc 0
a aaa 0
a aaa 0
啊哈!發佈在[http://stackoverflow.com/questions/2337271/ora-30926-unable-to-get-a-stable-set-of-rows-in-the-source-tables]表明我必須有獨特的要插入的記錄。因此 - 如果我將我的sql更改爲--- arrggh,請參閱我對自己問題的回答 –