2010-11-30 14 views
0

一連のリナンバリング:私は私は次のようになり、データを持つテーブルがある行

select * from table1 where group = "search engine" 

をすれば、私は

http://www.google.com 
google 
search engine 
1 

http://www.yahoo.com 
yahoo 
search engine 
2 

http://www.bing.com 
bing 
search engine 
3 

を取得します

# the columns # 
url 
title 
group 
id_within_group 

http://www.google.com 
google 
search engine 
1 

http://www.yahoo.com 
yahoo 
search engine 
2 

http://www.bing.com 
bing 
search engine 
3 

http://www.facebook.com 
facebook 
social media 
1 

http://www.twitter.com 
twitter 
social media 
2 

をだろうこれらの行のいずれかを削除できるようにしたいが、何とかid_within_groupの番号を変更する。

http://www.google.com 
google 
search engine 
1 

http://www.bing.com 
bing 
search engine 
2 

で私を残し、私は上記の3から2番目1を削除した場合

SO、それは自動的にその後、再番号付けする必要があり、これは可能ですか?

+3

実際に番号を変更するのではなく、 'SELECT'を実行するときに、' ROW_NUMBER()をid_within_groupによって[group] order by partition_sequence as sequential_index'だけ使用できますか? –

+0

興味深いですね。やってみます。 – oshirowanen

+0

@Martin、それは動作します!ありがとう。私はそれを受け入れることができる標準的な答えとしてその解決策を追加してください。 – oshirowanen

答えて

6

私は、SELECTでこれを行うには、連続する整数を表示するだけでよいでしょう。

SELECT url    , 
     title   , 
     [group]   , 
     id_within_group , 
     ROW_NUMBER() over (partition BY [group] ORDER BY id_within_group) AS sequential_index 
FROM  YourTable 
関連する問題