[英]Add column with id in Oracle SQL
在Oracle db中有一個像這樣的表:
Word Cnt
A 20
B 25
C 23
B 29
D 31
我想做的是添加一個帶有單詞id的附加列。 但它不是一個主要的關鍵因為重復的話不會是獨一無二的。 所以我正在尋找的結果是:
Word Cnt ID
A 20 1
B 25 2
C 23 3
B 29 2
D 31 4
如何在Oracle SQL中執行該操作?
您可以使用窗口函數來計算ID:
select word,
cnt,
dense_rank() over (order by word) as id
from the_table;
如果你真的需要堅持下去,你可以使用上面的表來更新表:
merge into the_table tg
using (
select rowid as rid,
dense_rank() over (order by word) as new_id
from the_table
) t on (t.rid = tg.rowid)
when matched then update
set id = t.new_id;
我的解決方案需要大量嵌套子查詢,但它可以工作......
alter table mytable add (id number(12));
update mytable
set id = (select n from
(select word, rownum n from
(select word from mytable group by word order by word)
) x where mytable.word = x.word
);
如果您的意圖只是選擇
select word,cnt,count(*) over(partition by word,count) as Id from table_name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.