想在表里面增加一列序号,请问各位咋个子整?
我有个表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万,不打乱原来存储的顺序
[最优解释]
大概格式如下:
;
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.主键
[其他解释]
那这个出来的不就是你要的咯?
SELECT row_number() OVER ( ORDER BY GETDATE() ) AS xh ,
*
FROM tableName WITH ( NOLOCK )
[其他解释]
ORDER BY GETDATE() 这个东西一般是在没有什么列可以row_number时使用,由于getdate()即使同一时刻,都是自上而下,所以产生的ID是顺序的。
[其他解释]
alter table tableName
add column ID int identity(1,1)
[其他解释]
加一列,设为自增,然后
insert into 目标表(除自增外的字段)
select 除自增外的字段 from tableName
[其他解释]
这个顺序是你想要的吗?
select row_number() over (order by getdate()) as xh,jjdid into #aa from tableName
[其他解释]
这个并不是之后插入
这句执行之后,表就会多加一排序列了
[其他解释]
SET IDENTITY_INSERT TableName OFF
那你可以,插入后取消自增
[其他解释]
你用个cte临时存放嘛,然后update源表
------其他解决方案--------------------
21楼是对的
[其他解释]
如果你是想展示的时候第一列,那就select xh,.....这样咯,其实表上的列无关紧要的。或者你创建了列之后,在SSMS里面调一下也可以
[其他解释]
没有主键,没有唯一性约束列么?那怎么确保数据的一致性、唯一性 呢?
[其他解释]
主键不一定是一个ID啊,你的表中组合几个列应该也可以作为主键的
[其他解释]
我是要把之前的这些数据排个序号,这个只能是之后插入的嘛
[其他解释]
然后把目标表里面的整到tableName表里面?
这样不会改变现在的存储顺序?这个顺序很重要。而且这个过程中可能有人在用我的这个tableName表
[其他解释]
最好不是,之前程序出错了,好多时间在前台update的时候都设置为相同的了,顺序最好是select * from tableName with(nolock)出来的这个顺序,谢谢了
[其他解释]
那我3楼那个可以了。
[其他解释]
我不要让他自增
[其他解释]
不想让他自增啊,可能会影响一些程序的使用
[其他解释]
该回复于2012-11-05 19:25:29被管理员删除
[其他解释]
嗯,怎么写进去?还有请教你个东西ORDER BY GETDATE()具体代表什么?谢谢你了
[其他解释]
明天我试试
[其他解释]
么怎么update嘛?
[其他解释]
我tableName里面有如下列:
jjdid,ysdbh,sdrxm,sdrdm,rylszh,ywbm,scb,tjsj,jsrxm,jsrdm,ztbz,yxbz,wwzt,xh
[其他解释]
没玩过什么CTE的,with什么的那个?你帮我写一个代码嘛
[其他解释]
临时建个主键得了,谢谢大家了。尤其是DBA_Huangzj
我还有个问题,新建的序号xh在最后,我怎么样把他调整到第一列的位置啊?
[其他解释]
麻烦就麻烦在这个表根本没有主键,不知道用什么关联了,数据库设计的有问题。
[其他解释]
这个太难了,这表设计就有问题,吸取教训,以后自己设计的时候好好设计。
这里有一个修改列位置的博客,谢谢大家了。http://blog.csdn.net/vivianfdlpw/article/details/492112