当前位置: 代码迷 >> Sql Server >> SQL 在一表中插入一行的有关问题
  详细解决方案

SQL 在一表中插入一行的有关问题

热度:2   发布时间:2016-04-24 09:31:13.0
SQL 在一表中插入一行的问题。
本帖最后由 keith_cheung 于 2013-04-29 16:09:08 编辑
如我有一个表是这样的:

ID   内容
A    1
B    2
D    3
E    4
F    5
G    6

其中,ID是具有主键性质的,即不能重复。

如果我想在 ID B,D 之间插入,一行 ID C,变成:
(后面的值随着 +1)

ID   内容
A    1
B    2
C    3
D    4
E    5
F    6
G    7

这句要如何写?谢谢!
------解决思路----------------------
从最后一行开始更新ID列?等到您想要的位置的时候,再插入?

------解决思路----------------------
在ID列建立聚集索引,然后更新‘内容’列为row_number
------解决思路----------------------

if OBJECT_ID('test') is not null
drop table test
go
create table test(id varchar(3),value int, constraint pk_id primary key (id))
insert into test values ('A',   1),
 ('B',    2),
 ('D',    3),
 ('E',    4),
 ('F',    5),
 ('G',    6)
 --create clustered index clu_id on test(id)
 insert into test(id) values('C')
 update test set value=row from test t1 join(
 select id,ROW=ROW_NUMBER()over(order by id) from test
 )as t2 on t1.id=t2.id
 select * from test

------解决思路----------------------
貌似不能在中间插入吧
插入记录一般都是默认在最后一行添加记录的
------解决思路----------------------
老衲不高深,但老衲还算知道点土办法:
先把需要插入的数据都插入原表中,然后全选复制到一个临时表中,然后全选复制回来,但order by ID
  相关解决方案