编辑
TDLIB > Oracle

oracle添加自增列/表中已有数据增加序号/更新序号

TTT   ·  2020.1123 20:34:55
Stat:125v. 2r. 0u. 0d. 0f 

oracle添加自增序列/表中已有数据增加序号/更新序号

--创建表和数据
create table system.tt (fid number(12),name varchar2(10)) tablespace sydat01;
insert into system.tt (name) values (|aa|);
insert into system.tt (name) values (|bb|);

--查看数据
select * from tt;

--创建序列
create  sequence fid_tt
minvalue 10000000
maxvalue 99999999
start with 10000001
increment by 1
nocycle
nocache;

--创建触发器
create or replace trigger tt_fid
  before insert on system.tt
  for each row
begin
    select fid_tt.nextval into :new.fid from dual;
end tt_fid;

--更新已有数据的序列
update system.tt set fid=rownum;

--查看数据
select * from tt;

--再写入数据
insert into system.tt (name) values (|cc|);
insert into system.tt (name) values (|dd|);

--查看数据
select * from tt;

+++
如何给表中的已有数据增加序号/更新序号

原来很简单:update system.tt set fid=rownum;

还了解了以下:

简单了解一下rownum
       rownum是oracle对结果集返回的一个伪列,也就是说在查询完结果之后加上的一个虚列,相当于对符合条件的结果的一个序列号。如果有结果的话,rownum伪列产生的序号是按照数据被查询出来的顺序添加上去的, rownum总是从1开始,依次加1

将表tableName中的rownum值赋值给表tableName中的sort列
PS:tableName可以是相同的表也可以是不同的表
UPDATE  tableName  A  SET A.SORT = (
    SELECT b.num from(
	SELECT  id,ROWNUM as num  FROM  tableName
     ) b  WHERE A . ID = b. ID
)
从SQL语句中可以看出ROWNUM是 先查询之后再使用的,这也对应了ROWNUM的特性

+++
在oracle里面的序号一般使用row_number() over(ORDER BY  列名) 分析函数
语法格式:row_number() over(partition by 分组列 order by 排序列 desc);
select row_number() over(order by t.id) rowno,t.* from tt;

sql语句:
UPDATE tt a SET a.SYS_CODE=(SELECT b.rowno FROM (SELECT row_number() over(ORDER BY t.id) rowno, ROWID browid from tt t ) b WHERE b.browid = a.rowid)

end


Tag:   oracle   
下一个
【相关内容】
#1 .  游客杜老师说 · at 2020.1124 14:56:50 · 0u.0d.0s
你这个是博客?看起来好像轻论坛~
TTT
#2 .  TTT · at 2020.1124 15:19:49 · 0u.0d.0s
说真的,定位我也没有搞清楚。。。 这是自己作的,可以作为论坛,可以作博客吧!
发表您的评论:
名字
邮箱
站点
验证:  74 + 6 =
    

[选择设置(可以不操作)]
内容格式:
TDLIB © 2016. All Rights Reserved. tdlib
冀ICP备20010738号-2
万维旗下网站:万维社区 · 友情链接 · 万维库 · 吐逗酷 · TDLIB · YOYO · Note