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语句实现啊?
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语句实现啊?
看看能不能一条语句查询出来
insert into @Tselect 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行
(
Id INT,
Memo VARCHAR(100)
)
GO
INSERT INTO tbr
SELECT 100, 'aaaa' UNION
SELECT 200, 'bb' UNION
SELECT 300, 'ccc' UNION
SELECT 400, '这行是400' UNION
SELECT 500, '500行'SELECT ID,Memo
FROM tbr
WHERE ID < 400
UNION
SELECT 400,'这是插入的行'
FROM tbr
UNION
SELECT ID + 100,Memo
FROM tbr
WHERE ID > 300ID Memo
100 aaaa
200 bb
300 ccc
400 这是插入的行
500 这行是400
600 500行
select 100 od,'aaaa' title into #tb1 union all
select 200,'bb' union all
select 300,'ccc' union all
select 400,'这行是400' union all
select 500,'500行' union all
select 600,'600行'--drop table #tb
select *,0 aod into #tb from #tb1 order by oddeclare @od1 int=0
declare @od2 int=0
update #tb set aod=@od2,@od2=case when @od2-@od1<200 then @od1 else 0 end,@od1=od from #tbselect od,case when od<400 then title when od=400 then '这是插入的行'
else cast(aod as nvarchar(20))+'行' end from #tb