30分求 简单insert 问题
现在有一个表,如下:
name phone
aa 123
bb 234
cc 345
dd
我想在phone的345之前插入789,变成如下:
name phone
aa 123
bb 234
cc 789
dd 345
请问怎样实现?
问题点数:30、回复次数:10Top
1 楼vivianfdlpw()回复于 2005-08-03 23:53:50 得分 3
update 表 set phone=789 where phone=345
update 表 set phone=345 where name='dd'Top
2 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2005-08-04 00:32:23 得分 6
如果数据为
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'Top
3 楼howtofindyou()回复于 2005-08-04 00:33:47 得分 0
谢谢大侠,但name哪一列是动态的,所以更新phone那一列的时候,dd的位置已经变化了,请问怎么办呢?Top
4 楼howtofindyou()回复于 2005-08-04 00:42:00 得分 0
phone 的数据和name的数据是没有关系的,大家都可以动态增加的Top
5 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2005-08-04 00:49:59 得分 4
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'
Top
6 楼howtofindyou()回复于 2005-08-04 01:09:40 得分 0
问题是,这个345不一定要和dd在同一行的,数据是不断增加的,两列都是不同步,动态变化的,大家都没有关系的.Top
7 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2005-08-04 08:49:48 得分 5
那你是根据什么条件去更新数据啊??
你怎么说的跟随机更新一样??Top
8 楼hglhyy(為人民币服务!)回复于 2005-08-04 08:57:38 得分 5
楼主还是把你的实际问题和实际数据帖出来!这样好分析问题!
楼主的意思是动态的,那name 列是怎么组成的,有没有规律,还有photo 是有序的吗?可数据库的记录是无序的!也就是你插入的每一条记录,不一定是在表的最后一条!Top
9 楼howtofindyou()回复于 2005-08-04 09:19:22 得分 0
就好象是两个泡泡,大家放在一起,但在最后一个数据,它要永远都是最后的,其它增加的只能在它的上面.这个就是我要达到的效果,谢谢大家!Top
10 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2005-08-04 10:40:35 得分 7
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-1Top




