使用where子句在SQL中更新记录时处理重复项

时间:2015-04-24 16:32:44

标签: sql database oracle relational-database sqlplus

我有一种情况,我需要更新表中的行,当遇到重复的条目时,然后根据另一个列值做出决定。

例如,让我们说我的表是这样的:salary_table

 Salary    Username   Usersurname  Last_entry_date

  3000      abc         bak             20-feb-13

  4000      sdf         kup             20-mar-15

  5000      abc         bak             20-mar-15

所以我的更新查询是这样的

update salary_table 
set salary=9000 
where username=abc 
  and usersurname=bak;

对于第2行的记录,当有唯一条目时,这不会导致任何问题

但我会为像1(1和3)这样的记录获取多行,但我只想更新一行。在这种情况下,我想检查last_entry_date。并且具有最新日期(在这种情况下为第3行)的条目应该更新。

怎么做?

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

Update salary_table
set salary = 9000
where username= 'abc'
  and usersurname= 'bak'
  and Last_entry_date = (select max(Last_entry_date)
                        from SalaryTable
                        where s.username = username
                        and s.usersurname = usersurname);

答案 1 :(得分:0)

你必须添加" where子句"在这种情况下你想要什么  " last_entry_date = ??" 如果没有添加适当的过滤器,您将如何识别要更新的行。