30分求 简单insert 问题

howtofindyou 2005-08-03 11:48:50
现在有一个表,如下:

name phone
aa 123
bb 234
cc 345
dd

我想在phone的345之前插入789,变成如下:

name phone
aa 123
bb 234
cc 789
dd 345

请问怎样实现?
...全文
136 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangqijun199 2005-08-04
  • 打赏
  • 举报
回复
select identity(int,1,1) as id,name,phone into #1 from t1
先生成一个序号.

update a set a.phone=b.phone
from t1 a,#1 b,#1 c
where b.id>4 and b.id-c.id=1
and a.主健=b.主健

update t1 set phone=345 where name='dd'
howtofindyou 2005-08-04
  • 打赏
  • 举报
回复
phone 的数据和name的数据是没有关系的,大家都可以动态增加的
howtofindyou 2005-08-04
  • 打赏
  • 举报
回复
谢谢大侠,但name哪一列是动态的,所以更新phone那一列的时候,dd的位置已经变化了,请问怎么办呢?
tangqijun199 2005-08-04
  • 打赏
  • 举报
回复
如果数据为
aa 123
bb 234
cc 345
dd 890
ee 909
ff
要把dd开始后面的都下拉的话
update a set a.phone=b.phone
from t1 a,t1 b
where a.name>'dd' and ascii(left(a.name,1))-ascii(left(b.name,1))=1

update t1 set phone=345 where name='dd'
tangqijun199 2005-08-04
  • 打赏
  • 举报
回复
select identity(int,1,1) as id,name,phone into #1 from t1
先生成一个序号.

update a set a.phone=b.phone
from t1 a,#1 b,#1 c
where b.id-c.id=1
and a.主健=b.主健 and b.id=你要开始的行的id(从这一行开始其他的都向下移动。不知道我理解错了没有,最好有详细一点的数据看一下。)

update a from t1 a,#1 b set a.phone=345 where a.主建=b.主建 and b.id=你要开始的行的id-1
howtofindyou 2005-08-04
  • 打赏
  • 举报
回复
就好象是两个泡泡,大家放在一起,但在最后一个数据,它要永远都是最后的,其它增加的只能在它的上面.这个就是我要达到的效果,谢谢大家!
hglhyy 2005-08-04
  • 打赏
  • 举报
回复
楼主还是把你的实际问题和实际数据帖出来!这样好分析问题!

楼主的意思是动态的,那name 列是怎么组成的,有没有规律,还有photo 是有序的吗?可数据库的记录是无序的!也就是你插入的每一条记录,不一定是在表的最后一条!
tangqijun199 2005-08-04
  • 打赏
  • 举报
回复
那你是根据什么条件去更新数据啊??

你怎么说的跟随机更新一样??
howtofindyou 2005-08-04
  • 打赏
  • 举报
回复
问题是,这个345不一定要和dd在同一行的,数据是不断增加的,两列都是不同步,动态变化的,大家都没有关系的.
vivianfdlpw 2005-08-03
  • 打赏
  • 举报
回复
update 表 set phone=789 where phone=345
update 表 set phone=345 where name='dd'

34,575

社区成员

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

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