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;

  
  参考内容https://zhidao.baidu.com/question/390932023437481925.html的最佳答案

其它:附录一个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 $$;
原文链接:https://www.f2er.com/postgresql/193202.html

猜你在找的Postgre SQL相关文章