在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) (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |