我想用行号更新表列。empid列中的每一行都应使用相关的行号进行更新。
我尝试了以下查询。

UPDATE employee SET empid = row_number();

但这是行不通的。任何想法?

最佳答案

首先,这不是row_number()函数的正确语法,因为您缺少over子句(导致ORA-30484错误)。即使是这样,这也行不通,因为您不能直接在set子句中使用窗口函数(导致ORA-30483错误)。

但是,对于这种用例,您可以只使用rownum伪列:

UPDATE employee SET empid = ROWNUM;

SQLFiddle

10-08 13:39