如何使用从获取重复记录的子查询中的数据更新表列

时间:2015-01-06 19:11:42

标签: sql oracle

我有一个表abc,其中包含某些用户数据(名称,ID,加入日期),另一个表xyz具有相似的列但具有重复数据。我想更新表abc的日期列,日期值为xyz。但是xyz有重复的数据,并且出现错误'单行子查询返回...'。当另一个表有重复数据时,如何将数据从一个表更新到另一个表。我希望保留表xyz中的数据,并且不能删除重复记录。我正在使用的查询是: -

update abc
set date = (select date from 
( select a.date from xyz a, abc b where a.emp_id=b.emp_id ))-- this query gives duplicate records hence the error single row subquery...

where exists
( select 1 from ( select a.emp_id from abc a, xyz b where a.emp_id=b.emp_id)
)

2 个答案:

答案 0 :(得分:0)

如果您的子查询返回所有记录的相同日期,则可以按以下方式修改

 select a.date from xyz a, abc b where a.emp_id=b.emp_id and rownum = 1

答案 1 :(得分:0)

尝试使用max或min来获取其中一个重复值。

update abc b
set date = (select max(date) from 
xyz a where a.emp_id=b.emp_id )