SQL 在一表中插入一行的问题。

keith_cheung 2013-04-29 04:08:17
如我有一个表是这样的:

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

这句要如何写?谢谢!
...全文
591 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
GK_2014 2014-12-29
  • 打赏
  • 举报
回复
引用 7 楼 shnaying1945 的回复:
老衲不高深,但老衲还算知道点土办法: 先把需要插入的数据都插入原表中,然后全选复制到一个临时表中,然后全选复制回来,但order by ID
这个办法虽然有点逗,但是可行
daiyueqiang2045 2013-04-30
  • 打赏
  • 举报
回复
你的主键怎么是字母的呢?
shnaying1945 2013-04-30
  • 打赏
  • 举报
回复
老衲不高深,但老衲还算知道点土办法: 先把需要插入的数据都插入原表中,然后全选复制到一个临时表中,然后全选复制回来,但order by ID
14号选手 2013-04-29
  • 打赏
  • 举报
回复
貌似不能在中间插入吧 插入记录一般都是默认在最后一行添加记录的
习惯性蹭分 2013-04-29
  • 打赏
  • 举报
回复

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
习惯性蹭分 2013-04-29
  • 打赏
  • 举报
回复
在ID列建立聚集索引,然后更新‘内容’列为row_number
baby_9527 2013-04-29
  • 打赏
  • 举报
回复
从最后一行开始更新ID列?等到您想要的位置的时候,再插入?
lmc19860810 2013-04-29
  • 打赏
  • 举报
回复
好像是不行吧? 要是千万条数据 每次在中间插入,都得更新啊

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧