我有个表tableName,里面大概存放了10万数据,现在我想在这个表里面增加一列序号(xh),xh从1,2,3,4……10万编号我采用的方式是,select row_number() over (order by jssj) as xh,jjdid into #aa from tableName
然后 update tableName set xh=b.xh from tableName a, #aa b where a.jjdid=b.jjdid但是我发现这个jjdid有重复的,所以里面的序号xh也就有重复的,没有达到预期效果。请教各位大侠了。大概实现如下效果1,2,3,4……10万,不打乱原来存储的顺序

解决方案 »

  1.   

    alter table tableName
      add column ID int identity(1,1)
      

  2.   

    加一列,设为自增,然后 
    insert into 目标表(除自增外的字段) 
    select 除自增外的字段 from tableName
      

  3.   

    这个顺序是你想要的吗?select row_number() over (order by getdate()) as xh,jjdid into #aa from tableName
      

  4.   

    然后把目标表里面的整到tableName表里面?
    这样不会改变现在的存储顺序?这个顺序很重要。而且这个过程中可能有人在用我的这个tableName表
      

  5.   

    最好不是,之前程序出错了,好多时间在前台update的时候都设置为相同的了,顺序最好是select * from tableName with(nolock)出来的这个顺序,谢谢了
      

  6.   

    那这个出来的不就是你要的咯?SELECT  row_number() OVER ( ORDER BY GETDATE() ) AS xh ,
             *
     FROM    tableName WITH ( NOLOCK )
      

  7.   

    SET IDENTITY_INSERT TableName OFF
    那你可以,插入后取消自增
      

  8.   


    嗯,怎么写进去?还有请教你个东西ORDER BY GETDATE()具体代表什么?谢谢你了
      

  9.   

    ORDER BY GETDATE() 这个东西一般是在没有什么列可以row_number时使用,由于getdate()即使同一时刻,都是自上而下,所以产生的ID是顺序的。
      

  10.   

    你用个cte临时存放嘛,然后update源表
      

  11.   


    没玩过什么CTE的,with什么的那个?你帮我写一个代码嘛
      

  12.   

    我tableName里面有如下列:
    jjdid,ysdbh,sdrxm,sdrdm,rylszh,ywbm,scb,tjsj,jsrxm,jsrdm,ztbz,yxbz,wwzt,xh
      

  13.   

    大概格式如下:;
    WITH    cte
              AS ( SELECT   row_number() OVER ( ORDER BY GETDATE() ) AS xh ,
                            *
                   FROM     tableName WITH ( NOLOCK )
                 )
        UPDATE  tableName
        SET     xx = xx
        FROM    tableName a
                INNER JOIN cte b ON a.主键 = b.主键
      

  14.   

    临时建个主键得了,谢谢大家了。尤其是DBA_Huangzj
    我还有个问题,新建的序号xh在最后,我怎么样把他调整到第一列的位置啊?
      

  15.   

    如果你是想展示的时候第一列,那就select xh,.....这样咯,其实表上的列无关紧要的。或者你创建了列之后,在SSMS里面调一下也可以
      

  16.   


    这个太难了,这表设计就有问题,吸取教训,以后自己设计的时候好好设计。这里有一个修改列位置的博客,谢谢大家了。http://blog.csdn.net/vivianfdlpw/article/details/492112