加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

在PostgreSQL中设置表中某列值自增或循环方法

发布时间:2021-10-14 14:06:54 所属栏目:动态 来源:互联网
导读:这篇文章主要介绍了在PostgreSQL中设置表中某列值自增或循环方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。 在postgresql中,设置已

这篇文章主要介绍了在PostgreSQL中设置表中某列值自增或循环方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

 

在postgresql中,设置已存在的某列(num)值自增,可以用以下方法:

 

//将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中

create table tb1 as (select *, row_number() over(order by name) as rownum from tb);

//根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中

update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name);

//判断表tb1的存在并删除表

drop table if exists tb1;

 

 

 

在postgresql中,循环设置已存在的某列(num)值为0-9,可以用以下方法:

 

//将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中

create table tb1 as (select *, row_number() over(order by name) as rownum from tb);

//根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中,由于为0-9循环自增,则%10

update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name) % 10;

//判断表tb1的存在并删除表

drop table if exists tb1;

 

 

 

其它:附录一个postgresql循环的写法(与上文无关)

 

 do $$

 declare

 v_idx integer :=0;

 begin

  while v_idx < 10 loop

   update tb set num = v_idx;

   v_idx = v_idx + 1;

  end loop;

end $$;

 

 

 

补充:postgreSQL SQL语句创建自增表

 

postgreSQL通过将字段类型设置为serial来将表设计为自增表

 

CREATE TABLE t_achievement_directory (

 id serial8 PRIMARY KEY,

 directory_name varchar(255) COLLATE "pg_catalog"."default",

 pid int8,

 modify_time timestamp(6)

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读