2010-11-30 14 views
0

ich eine Tabelle mit Daten, die nach so etwas wie das aussieht:Umnummerierung eine Reihe von Zeilen

# 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 

wenn ich

select * from table1 where group = "search engine" 

tun werde ich

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

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

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

bekommen würde ich mag in der Lage sein, eine dieser Zeilen zu löschen, aber irgendwie die Id_within_group neu nummerieren.

SO, wenn ich die zweite von oben 3 löschen, sollte es automatisch dann RENUMBER mich verlassen mit

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

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

Ist das möglich?

+3

Können Sie nur 'ROW_NUMBER() über (Partition von [Gruppe], um durch id_within_group) als sequential_index', wenn Sie die' SELECT' tun anstatt tatsächlich Umnummerierung? –

+0

Klingt interessant. Ich werde es ausprobieren. – oshirowanen

+0

@Martin, es funktioniert! Vielen Dank. Fügen Sie diese Lösung als Standardantwort hinzu, damit ich sie akzeptieren kann. – oshirowanen

Antwort

6

Mein Vorschlag wäre, dies in der SELECT zu tun, wenn Sie nur eine sequentielle Ganzzahl anzeigen müssen.

SELECT url    , 
     title   , 
     [group]   , 
     id_within_group , 
     ROW_NUMBER() over (partition BY [group] ORDER BY id_within_group) AS sequential_index 
FROM  YourTable 
Verwandte Themen