oracle 怎样使UPDATE 更新序列??

比方说一个表Aid是一个自动生成的序列id时间412012-01-01552012-01-02572012-01-03怎么样用update来更新表A的序列id中的数从1开... 比方说一个表 A id是一个自动生成的序列
id 时间
41 2012-01-01
55 2012-01-02
57 2012-01-03
怎么样用update来更新表A的序列id中的数从1开始 即
id 时间
1 2012-01-01
2 2012-01-02
3 2012-01-03
请大侠们帮忙!!!
展开
 我来答
匿名用户
推荐于2017-11-24
展开全部
可以使用update select 语法进行更新
喜欢研究的可以自行学习下,以便积累
不想浪费时间可以看下面:
UPDATE A SET ID = (SELECT ROWNUM FROM A ORDER BY 时间 DESC)

参考语法:
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-02-04
展开全部
按行排序呗,使用 rownum 就可以了,如:
update 表A set id = rownum
追问
要按时间的顺序排列怎么办?时间降序排列
追答
如果排列的话,还是借助临时表吧
create table 表A_tmp as select * from 表A order by 时间;
update 表A_tmp set id = rownum;
delete from 表A;
insert into 表A select * from 表A_tmp;
commit;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
520江南之乡
2013-02-06 · TA获得超过505个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:77.3万
展开全部
楼上所说,把表中当前记录的id按照顺利进行了重置。但新插入记录时,id就不连续了,所以分三步:
1、重置表中id:update 表A set id = rownum
2、获取当前最大id:select max(id) from 表名;
3、重置序列值:alter sequence 序列名称 increment by 表中的最大id值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式