簡體   English   中英

在Oracle SQL中添加帶id的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM