2017-10-04 6 views
0

大きなテーブル(300万行と約12列)があります。重複する値を含むことができる1つの列があります。これが私の「ID」列です。私は2番目の列 "NUM_ID"を持っています。それは、すべてのユニークな "ID"の値が1から始まるようにしたいのです。次に、重複した値に遭遇した場合、「NUM_ID」は1つの値(2まで)を上乗せします。例:別の列の重複値に関連して列に自動インクリメント値を追加する

ID  NUM_ID 
1  1 
2  1 
2  2 
2  3 
3  1 
3  2 
4  1 
5  1 
5  2 
5  3 
5  4 

「ID」はあらかじめ設定されていますが、この列とその値は変更できません。私の "NUM_ID"カラムは現在空​​です - 上記のようにカラムに値を設定するために使用できるsqlコマンドがあることを期待していますか?私はPythonを使用しようとしましたが、3M行を更新するのに時間がかかります。また、重要な場合は、私はPostGresSQLを使用しています。

ヘルプ?ありがとう!

+0

FWIWをあなたは、PostgreSQLを使用している場合、あなたはおそらく、MySQLとSQLを削除する必要がありますあなたのタグリストからサーバー。 – Xedni

+0

ここにテーブルにカラムを追加するのではなく、NUM_IDに 'ROW_NUMBER()OVER(PARTITION BY ID ORDER BY whatever) 'を使うビューを使う方が良いと思います。 – ZLK

答えて

2

あなたがSQL Serverを使用している場合は、以下のようにROW_NUMBER()を使用する必要があります。

SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) NUM_ID FROM #TM 

結果:

ID NUM_ID 
1 1 
2 1 
2 2 
2 3 
3 1 
3 2 
4 1 
5 1 
5 2 
5 3 
5 4 
+0

これを実際の列「NUM_ID」に書き込むにはどうすればよいですか? – mcfly

+0

私はあなたがこれを行う必要はないと思う。 –

+0

2つの列を主キー(ID、NUM_ID)に変換したいのですが、そのために列に値を設定したいと考えています。 – mcfly

関連する問題