首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL查询update返回UPDATE %0

PostgreSQL查询update返回UPDATE %0
EN

Stack Overflow用户
提问于 2021-02-28 19:06:55
回答 2查看 170关注 0票数 1

我在使用PostgreSQL查询时遇到了问题,因为我的更新条件包含更多的先决条件。

我附上了2张图片来描述我的问题。

我想要更新突出显示的行

代码语言:javascript
复制
UPDATE locations
SET lat = 48.20325265836398, long = 16.34969524923078
WHERE prof_id = 58 AND lat = 47.5327567434237 AND long = 21.6292262077332

但回应是:

代码语言:javascript
复制
UPDATE 0 Query returned successfully in 58 msec.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-28 19:34:03

您的问题可能在其他地方(请参阅此

)

代码语言:javascript
复制
CREATE TEMPORARY TABLE locations (
id INT, prof_id INT, lat NUMERIC, long NUMERIC);

INSERT INTO locations VALUES 
(57,58,47.5327567434237,21.6292262077332);

UPDATE locations SET lat = 48.20325265836398, long = 16.34969524923078 
WHERE prof_id = 58 AND lat = 47.5327567434237 AND long = 21.6292262077332;

SELECT * FROM  locations;

 id | prof_id |        lat        |       long        
----+---------+-------------------+-------------------
 57 |      58 | 48.20325265836398 | 16.34969524923078
(1 Zeile)

关于你的数据的一些想法:

减少

你的坐标。有了13个小数,你就进入了微米的范围,这在地理应用程序中并不是很有用。正如你所见,这种精确度使得

查询非常具有挑战性。

考虑使用

来存储你的坐标。它有超过1.3k的kickass函数,使得处理地理空间数据变得非常简单和高效。一开始可能看起来很复杂,但相信我,从长远来看,它肯定会有回报的!

票数 1
EN

Stack Overflow用户

发布于 2021-02-28 19:31:35

永远不要假设您看到的小数位就是存储在表中的确切数字。

在您的情况下,仅

或者

足以更新行(正如我从附件中看到的),因此,不需要

但是,如果您在更新过程中被迫使用小数进行比较(如果您的数据库表设计不佳,我会争辩),请始终将它们舍入到可控制的小数点,如下所示:

代码语言:javascript
复制
UPDATE locations SET 
       lat = 48.20325265836398, 
       long = 16.34969524923078 
WHERE  prof_id = 58 
       AND ROUND(lat,13) = 47.5327567434237 
       AND ROUND(long,13) = 21.6292262077332
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66408388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档