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

求一条SQL语句看看能不能实现这样的要求
select od,title from table1 order by od 返回这样的结果
100 aaaa
200 bb
300 ccc
400 这行是400
500 500行

现在想在or为300的后边插入一行,结果变成
100 aaaa
200 bb
300 ccc
400 这是插入的行 ==>在od为300的行插入后,原300后边的数据重新按顺序编号
500 这行是400 ==>这是原来的400, 上面插入后or这一列的值变为500
600 500行

这样的要求能不能用一条SQL语句实现啊?

------解决方案--------------------
declare @T table(od int,title varchar(50))
insert into @T

select 100,'aaaa' union all
select 200,'bb' union all
select 300,'ccc' union all
select 400,'这行是400' union all
select 500,'500行' 
 
 
--400 这是插入的行 

select od,title from @T order by od 
declare @temp int
set @temp=400 
update @T set od=od+100 where od>=@temp
insert into @T(od,title) values(@temp,'这是插入的行')
select od,title from @T order by od 

————————————————————————————————
od title
----------- --------------------------------------------------
100 aaaa
200 bb
300 ccc
400 这是插入的行
500 这行是400
600 500行