尝试更新oracle数据库中的记录时出错- ORA-30926:无法在源表中获取一组稳定的行

vq8itlhq  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(341)

我正在尝试使用从CSV文件中摄取的数据更新一个数据库表。
我遇到了以下错误:ORA-30926:无法在源表中获得一组稳定的行
我使用的查询如下:

merge into mdm_tableau_events_copy t
using mdm_tableau_events_test s
on (t.ID = s.ID)
when matched then update set t.FULL_NAME = s.FULL_NAME, t.PROJECT_NAME = s.PROJECT_NAME, t.EVENTS = s.EVENTS, t.DATE_USE = s.DATE_USE, t.COMPANY = s.COMPANY, t.WORKBOOK = s.WORKBOOK;
ppcbkaq5

ppcbkaq51#

看起来T.ID和S.ID之间没有1:1的关系,所以Oracle不知道取哪一行。如果是这样,一个选项是选择 * 任何 * 值(例如MAX一个),但是你必须将using子句 * 扩展 * 为这样的内容:

merge into mdm_tableau_events_copy t
using (select id,
              max(full_name) full_name,
              max(project_name) project_name
              -- put the rest of columns here, also with MAX
       from mdm_tableau_events_test
       group by id
      ) s
on (t.ID = s.ID)
when matched then update set 
  t.FULL_NAME = s.FULL_NAME, 
  t.PROJECT_NAME = s.PROJECT_NAME, 
  t.EVENTS = s.EVENTS, 
  t.DATE_USE = s.DATE_USE, 
  t.COMPANY = s.COMPANY, 
  t.WORKBOOK = s.WORKBOOK;

相关问题