在postgresql中分配随机数

Assign random number in postgresql

我在 postgresql 中有 table 以及 statename、districtname 和 DistID。现在我想根据每个地区的状态将随机数(从 1 开始到特定州的地区计数)分配给 'DistID' 列。请帮忙。

下面的查询将更新 table,以便州内每个区的编号从 1 开始。

查询以随机顺序分配 ID。如果您想要 predictable 将 random() 更改为地区,它将按地区名称字母顺序对它们进行排序。

update t
set distid = v.distid
from (
select 
  statename, district, 
  row_number() over (partition by statename order by random()) as distid
from t) v
where v.statename = t.statename and v.district = t.district;

Fiddle 示例位于 http://sqlfiddle.com/#!15/86341/5