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

shanzhifneg2 2011-12-06 11:57:58
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,求多条数据插入或更新另一个表的办法
高手来!~~~
...全文
2633 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanzhifneg2 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 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

只取一个值
[/Quote]
我是要把多条数据插入到表A里,这些数据共同点是id相同,帮忙想想办法,谢谢
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

只取一个值

[Quote=引用楼主 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 (……
[/Quote]
opps_zhou 2011-12-06
  • 打赏
  • 举报
回复
USING mm B 把这里替换为一个查询语句
using (select id, name from mm group by id,name) b

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧