日期:2014-05-18  浏览次数:20458 次

SQL中同时更新多行数据的
time team ID index recordtime
2011-12-09 日班 www 1 2011/12/9 17:25:05
2011-12-09 日班 www 3 2011/12/9 17:25:26
2011-12-09 日班 www 4 2011/12/9 17:27:24

index是自动生成的,每次添加一条就自动加1,现在我删除了第2条,想让数据库里面的index重新排序,
变成:

 time team ID index recordtime
2011-12-09 日班 www 1 2011/12/9 17:25:05
2011-12-09 日班 www 2 2011/12/9 17:25:26
2011-12-09 日班 www 3 2011/12/9 17:27:24

高手求解啊



------解决方案--------------------
有两种方法: 
方法1: 
truncate table 你的表名 --這樣不但將數據刪除,而且可以重新置位identity屬性的字段。 

方法2: 
delete from 你的表名 
dbcc checkident(你的表名,reseed,0) --重新置位identity屬性的字段,讓其下個值從1開始 



------解决方案--------------------
SQL code
declare @num int=0
update tb set index=@num,@num=@num+1

------解决方案--------------------
SQL code

create table qiujialongjjj(time date, team varchar(6), ID varchar(6), index_2 int, recordtime datetime)

insert into qiujialongjjj
select '2011-12-09', '日班', 'www', 1, '2011/12/9 17:25:05' union all
select '2011-12-09', '日班', 'www', 3, '2011/12/9 17:25:26' union all
select '2011-12-09', '日班', 'www', 4, '2011/12/9 17:27:24'

update a
set a.index_2=b.rn
from qiujialongjjj a
inner join
(select row_number() over(order by (select 0)) rn,* from qiujialongjjj) b
on a.recordtime=b.recordtime


select * from qiujialongjjj

time       team   ID     index_2     recordtime
---------- ------ ------ ----------- -----------------------
2011-12-09 日班     www    1           2011-12-09 17:25:05.000
2011-12-09 日班     www    2           2011-12-09 17:25:26.000
2011-12-09 日班     www    3           2011-12-09 17:27:24.000

(3 row(s) affected)