数据库中有个表A,我想每次保存时把A中的一个"序号"字段重新从1开始赋值
如:ID     序号
3       1
5       2
7       3
8       4
9       5此sql语句怎么写?

解决方案 »

  1.   

    序号列不要设置为自增.
    保存时插入row_number() over(order by 某列名)列.
      

  2.   

    如果你想要得到一个顺序增长的列的话,不需要特意存储。
    select *,row_number() over(order by ID asc) as row_index from TB
    这里的row_index就是从1开始自动增加的
      

  3.   

    最好是做前台修改,后台order by 出来,在前台在重新写一下序号即可.如果一定要改后台的数据....虽然这个性能的代价太大,但是还是做得到的.
    update A a
    set 序号=(select count(*) from A where ID<=a.ID)
      

  4.   

    参考:
    使用事务:
    主键用其他类型,如GUIDALTER TABLE Result DROP COLUMN 序号
    ALTER TABLE Result ADD 序号 int identity(1,1)
      

  5.   

    我真想不明白为什么这样做?真要注意实现我给个例子你吧每次保存之后读取该表的记录数n,然后做个循环更新for(int i=0;i<n;i++)
    {
       这里就是已一行一行进行更新!!!
    }
      

  6.   

    一行一行的插入的话,做个循环
    n是要更新的条数
    for(int i=1; i<=n; i++)
    {
       一条一条更新,这里把i值作为序号插入
    }如果是一张表的话,建议在建表的时候加入这列