我有个表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万,不打乱原来存储的顺序
然后 update tableName set xh=b.xh from tableName a, #aa b where a.jjdid=b.jjdid但是我发现这个jjdid有重复的,所以里面的序号xh也就有重复的,没有达到预期效果。请教各位大侠了。大概实现如下效果1,2,3,4……10万,不打乱原来存储的顺序
add column ID int identity(1,1)
insert into 目标表(除自增外的字段)
select 除自增外的字段 from tableName
这样不会改变现在的存储顺序?这个顺序很重要。而且这个过程中可能有人在用我的这个tableName表
*
FROM tableName WITH ( NOLOCK )
那你可以,插入后取消自增
嗯,怎么写进去?还有请教你个东西ORDER BY GETDATE()具体代表什么?谢谢你了
没玩过什么CTE的,with什么的那个?你帮我写一个代码嘛
jjdid,ysdbh,sdrxm,sdrdm,rylszh,ywbm,scb,tjsj,jsrxm,jsrdm,ztbz,yxbz,wwzt,xh
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.主键
我还有个问题,新建的序号xh在最后,我怎么样把他调整到第一列的位置啊?
这个太难了,这表设计就有问题,吸取教训,以后自己设计的时候好好设计。这里有一个修改列位置的博客,谢谢大家了。http://blog.csdn.net/vivianfdlpw/article/details/492112