代码之家  ›  专栏  ›  技术社区  ›  oshirowanen

对一组行重新编号

  •  0
  • oshirowanen  · 技术社区  · 14 年前

    我有一个包含数据的表,它看起来如下所示:

    # 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。

    所以如果我删除上面3中的第二个,它会自动重新编号,然后留给我

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

    这可能吗?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Martin Smith    14 年前

    我的建议是在 SELECT 如果你只需要显示一个连续整数。

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