![](/img/trans.png)
[英]Oracle, update column in table 1, when related row does not exist in table 2
[英]Update Oracle table column with row number
我想用行號更新表列。 empid
列中的每一行都應使用相關的行號進行更新。 我試過以下查詢。
UPDATE employee SET empid = row_number();
但這不起作用。 任何的想法?
首先,這不是row_number()
函數的正確語法,因為您缺少over
子句(導致ORA-30484錯誤)。 即使它是,這也行不通,因為你不能直接在set
子句中使用窗口函數(導致ORA-30483錯誤)。
但是,對於此用例,您可以使用rownum
偽列:
UPDATE employee SET empid = ROWNUM;
您可以執行以下操作。 如果需要,您可以更改行的ORDER BY順序。
UPDATE emp
SET empid = emp.RowNum
FROM (SELECT empid, ROW_NUMBER() OVER (ORDER BY empid) AS rowNum FROM employee) emp
UPDATE員工SET empid = row_number();
首先,它在語法上是不正確的。
其次,您不能使用ROW_NUMBER()
沒有analytic_clause解析函數。
當您回復我的評論時,訂單對您無關緊要,您可以簡單地使用ROWNUM 。
UPDATE employee SET empid = ROWNUM;
它將通過隨機選擇行來分配偽列值。 由於您要分配EMPID ,我建議您考慮訂購。
通常,員工ID是使用SEQUENCE對象生成的。 有兩種方法可以實現自動增量功能:
你也可以這樣做
create table your_table_name as
select row_number() over( order by 1) as serial_no, a.* from your_query a
這會在您編寫表本身時創建序列號。 (注意如果你想讓它充當pk,這不會被設置為PK)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.