Oracle中的UPDATE语句使用SQL或PL/SQL仅更新第一个重复行

11 sql oracle plsql sql-update

我正在寻找一个UPDATE语句,它只更新一个重复的行并保持其余(重复的行)原样,使用ROWID或其他东西或其他元素在Oracle SQL或PL/SQL中使用?

这是一个使用的示例duptest表:

CREATE TABLE duptest (ID VARCHAR2(5), NONID VARCHAR2(5));
Run Code Online (Sandbox Code Playgroud)
  • 跑一个 INSERT INTO duptest VALUES('1','a');

  • 跑了四(4)次 INSERT INTO duptest VALUES('2','b');

此外,必须始终更新(不删除)第一个重复行,而其他三个(3)必须保持原样!

非常感谢,Val.

Bri*_*itt 15

这对你有用吗:

update duptest 
set nonid = 'c'
WHERE ROWID IN (SELECT   MIN (ROWID)
                              FROM duptest 
                          GROUP BY id, nonid)
Run Code Online (Sandbox Code Playgroud)