postgresql - 每个更新具有不同随机值的 PSQL 行

标签 postgresql gis

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

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

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

最佳答案

我找到了 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 每次都重新计算表达式,需要一个外部依赖。

关于postgresql - 每个更新具有不同随机值的 PSQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48665573/

相关文章:

java - JPA 命名存储过程返回简单对象

sql - SELECT 语句 postgres 中的动态列

r - 如何在R基地绘制中国 map 与南海

hadoop - 可视化hadoop中的地理信息

sql - postgres - SELECT/GROUP BY 中的部分列 - 列必须出现在 GROUP BY 子句中或用于聚合函数

sql - Rails - 如何防止 postgres find_by_sql 查询的 sql 注入(inject)?

python - 从边界框坐标列表创建形状文件

python - 为什么子图的大小不同?

postgresql - 如何为函数参数指定泛型类型

gis - Openlayers 3 - wfs-t : change name of geometry field