使用不同的随机值更新PSQL行

时间:2018-02-07 13:52:46

标签: postgresql gis

我尝试从表中批量更新每一行,为它们分配一个单独的位置。这是我正在使用的查询

UPDATE point SET location=
  ST_PointFromText('POINT(' || 
  (SELECT random()+5) || ' ' ||
  (SELECT random()+5) || ')', 4326) 
  WHERE parent_id=100;

问题是每行会收到完全相同的值。

1 个答案:

答案 0 :(得分:2)

我发现this article by Szymon Lipiński触及了我的问题。以下是我修复查询的方法:

UPDATE point p SET location=
  ST_PointFromText('POINT(' || 
  ((SELECT random() WHERE p=p)+5) || ' ' ||
  ((SELECT random() where p=p)+5) || ')', 4326) 
  WHERE parent_id=100;

为了强制PostgreSQL每次都重新评估表达式,需要外部依赖。