如何在SQL中更新具有重复值的列

时间:2016-09-09 14:32:22

标签: sql oracle sql-update

我有这个employee表,其中包含一些重复值。我想用新地址更改emp_address

但我希望它只更新一行。

emp_id | emp_name | emp_address | emp_dept
-------+----------+-------------+-----------
 101   |   Rick   |    Delhi    |   D001
 101   |   Rick   |    Delhi    |   D001
 123   |   Maggie |    Agra     |   D890
 166   |   Glenn  |    Chennai  |   D900
 166   |   Glenn  |    Chennai  |   D900

2 个答案:

答案 0 :(得分:0)

快速解决方法是在更新查询中使用LIMIT 1

编辑:或在Oracle中使用ROWNUM <= 1

答案 1 :(得分:0)

在Oracle中,您可以更新如下:

 update table
    set emp_address = (Select emp_address
                       from emp a
                       where a.rowid in (select max(rowid)
                                        from emp_address b 
                                         where a.emp_id = b.emp_id                   
                                        group by  emp_id,emp_name) )
where emp_id =101;