idsが順番に増加するOracle SQLにはテーブルがありますが、編集のためにidsにギャップがあります。 IDSは、現在、私は1つのポストをチェックして、提供される解決策は以下の通りだったレコードを順番に更新するための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)私は上記のクエリを実行すると、それは私にエラー「このビュー上の法的ていないデータ操作オペレーション」を提供します。
ここで説明したソリューションがどのように機能するか説明することはできません。誰でも完全な更新クエリを投稿できますか?ありがとう。
update employee set emp_id = (
with tab as (
select emp_id, rownum r
from (select emp_id from employee order by emp_id)
)
select r from tab where employee.emp_id = tab.emp_id
);
動作します:あなたはそれを行う方法を示していますを参照し、同じ質問に対する
:他のユニークな列が存在しない場合は、
rowid
を使用することができますか?また、なぜNumberを重視するのか?逐次であることは本当に重要ですか? https://community.oracle.com/thread/2485143?start=0&tstart=0 –@RegencySoftware彼は仮想ビュー、つまり「更新(選択...)」を更新しています。一部の仮想ビューは更新できますが、すべて更新することはできません。私はemp_id番号の隙間を重要と見なすべきではない、とあなたに同意します。 –
私の質問は、以前に提供された解決策から提起されています。私が明確化を求めたとき、私は質問として疑問を投げかけるように求められました。だから私はそれをやった。今すぐソリューションを探してください。この種のアップデートについて私に知ってもらうことは素晴らしいことです。 – XING