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 $$;
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页