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
请大侠们帮忙!!! 展开
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
请大侠们帮忙!!! 展开
3个回答
推荐于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)
喜欢研究的可以自行学习下,以便积累
不想浪费时间可以看下面:
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
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上所说,把表中当前记录的id按照顺利进行了重置。但新插入记录时,id就不连续了,所以分三步:
1、重置表中id:update 表A set id = rownum
2、获取当前最大id:select max(id) from 表名;
3、重置序列值:alter sequence 序列名称 increment by 表中的最大id值
1、重置表中id:update 表A set id = rownum
2、获取当前最大id:select max(id) from 表名;
3、重置序列值:alter sequence 序列名称 increment by 表中的最大id值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询