dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。テーブル内の2つのカラムから、一意となるようにカラムに値を入れたいのですが、どのようにすれば良いのでしょうか?やりたいことは、以下のようなことです。

どうぞよろしくお願い致します。


現状のテーブル
code_up code_low code
あ      a     
い      b      
う       c     
あ      a
い      c


作りたいテーブル
code_up code_low code
あ      a     1
い      b     2  
う       c      3
あ       a      1
い     c      4

A 回答 (1件)

codeの値を一意に設定することは可能ですが、そのためにはどういう順番で連番をふるかの情報が必要です。


「作りたいテーブル」の例だと、無理やりやろうとするならストアドプロシージャでループし、(code_up code_low)が同一でcodeが振られていない場合はカウントアップしながら更新していくイメージでないと実現できないと思います。実行速度が心配です。

( code_up, code_low ) 順に連番を振るのなら

update テーブル
set code = s.rn
from ( select row_number() over( order by t.code_up, t.code_low ) as rn,
t.*
from ( select distinct * from テーブル ) t ) s
where テーブル.code_up=s.code_up and テーブル.code_low=s.code_low;

で実現できるはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!