2010-11-30 151 views
0

我有一個表的數據看起來像下面這樣:重新編號一組行

# 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 

,如果我做

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 

我會喜歡能夠刪除任何這些行,但不知何故讓它重新編號id_within_group。

,所以如果我從上面的3刪除第二個,它會自動重新編號,然後讓我

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

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

這可能嗎?

+3

當您執行SELECT操作而不是實際重新編號時,您可以直接使用ROW_NUMBER()(由id_within_group中的[group]順序分區)作爲sequential_index嗎? – 2010-11-30 11:52:46

回答

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