我在Oracle SQL中有一個表,它的id在遞增,順序排列,但由於編輯(例如,在IDS目前是這樣Oracle更新查詢以按順序更新記錄
22
23
24
32
33
44
...etc
我籤一個崗位和提供的解決方案是如下:
update (select t.*, row_number() over (order by id) as newid) toupdate
set id = newid
現在我的查詢: 1)我猜「FROM子句「在上述查詢中缺少。
更新查詢:
update (select t.*,
row_number() over (order by emp_id) as newid
from employee t) toupdate
set emp_id = newid;
2)當我運行上面的查詢,它給我的錯誤「數據處理操作這種觀點不合法」。
任何人都可以解釋如何提到的解決方案在這裏工作。任何人都可以發佈完整更新查詢。謝謝。
谷歌搜索的錯誤,它說要更新視圖,因此是你的「表」一表或視圖?另外,爲什麼要設計一些對數字非常重要的東西?它是順序的真的很重要嗎? https://community.oracle.com/thread/2485143?start=0&tstart=0 –
@RegencySoftware他正在更新一個虛擬視圖,即'update(select ...)'。一些虛擬視圖可以更新,但不是全部。我同意你的看法,認爲emp_id數字中的差距不應該被認爲是重要的。 –
我的問題是從前面提供的解決方案中提出的。當我要求澄清時,我被要求將疑惑作爲一個問題。因此我做到了。現在尋找解決方案。對我來說,瞭解這種更新將是一個很好的學習。 – XING