我正在尝试批量更新表中的每一行,为它们分配一个单独的位置。这是我正在使用的查询
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/