+ -
当前位置:首页 → 问答吧 → 在使用merge时出现ORA-30926: 无法在源表中获得一组稳定的行

在使用merge时出现ORA-30926: 无法在源表中获得一组稳定的行

时间:2011-12-06

来源:互联网

CREATE TABLE aa(ID NUMBER, NAME VARCHAR2(20));  

CREATE TABLE mm (ID NUMBER, NAME VARCHAR2(20));

INSERT INTO mm VALUES (1, 'A');  
INSERT INTO mm VALUES (1, 'B');  
INSERT INTO mm VALUES (1, 'A'); 
INSERT INTO mm VALUES (1, 'B'); 


MERGE INTO aa A  
  USING mm B  
  ON(A.ID=B.ID)  
  WHEN MATCHED THEN  
  UPDATE SET A.NAME = B.NAME  
  WHEN NOT MATCHED THEN  
  INSERT VALUES(B.ID, B.NAME); 

如不可以用merge,求多条数据插入或更新另一个表的办法  
高手来!~~~

作者: shanzhifneg2   发布时间: 2011-12-06

USING mm B 把这里替换为一个查询语句
using (select id, name from mm group by id,name) b

作者: opps_zhou   发布时间: 2011-12-06

不对,你 MM 表里,一个 ID 对应 2 个名字,你如何更新?
using (select id, max(name) as name from mm group by id) b
或者
using (select id, min(name) as name from mm group by id) b

只取一个值

引用楼主 shanzhifneg2 的回复:
CREATE TABLE aa(ID NUMBER, NAME VARCHAR2(20));

CREATE TABLE mm (ID NUMBER, NAME VARCHAR2(20));

INSERT INTO mm VALUES (1, 'A');
INSERT INTO mm VALUES (1, 'B');
INSERT INTO mm VALUES (……

作者: opps_zhou   发布时间: 2011-12-06

引用 2 楼 opps_zhou 的回复:
不对,你 MM 表里,一个 ID 对应 2 个名字,你如何更新?
using (select id, max(name) as name from mm group by id) b
或者
using (select id, min(name) as name from mm group by id) b

只取一个值

我是要把多条数据插入到表A里,这些数据共同点是id相同,帮忙想想办法,谢谢

作者: shanzhifneg2   发布时间: 2011-12-06