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

如何在有数据的表上创建序号列索引

  •  3
  • Makach  · 技术社区  · 14 年前

    下表有10个唯一的行,BookingID是一个包含随机数的FK。号码不需要按顺序排列。

    BookingID, Description
    1000       Foo
    3000       Bar
    1500       Zoo
    

    在SQLServer2005中如何做到这一点?我想写一个光标和x=x+1,但也许有更好的方法?

    这就是我想要的结果

    Id, BookingID, Description
    1   1000       Foo
    2   3000       Bar
    3   1500       Zoo
    
    2 回复  |  直到 14 年前
        1
  •  8
  •   OMG Ponies    14 年前

    这:

    SELECT ROW_NUMBER() OVER(ORDER BY t.bookingid) AS id,
           t.bookingid,
           t.description
      FROM YOUR_TABLE t
    

    …将产生:

    id  bookingid   description
    ----------------------------
    1   1000        Foo
    2   3000        Bar
    3   1500        Zoo
    

    更新现有的 id 列,使用:

    WITH cte AS (
       SELECT t.id,
              ROW_NUMBER() OVER(ORDER BY t.bookingid) AS rank,
              t.bookingid,
              t.description
         FROM YOUR_TABLE t)
    UPDATE cte
       SET id = rank
    
        2
  •  0
  •   Vivek    14 年前

    最好修改该表并添加一个标识列,如