0

我刚刚创建了一个新GEOMETRYp,需要p根据 colslatlng.

问题:使用下面的查询更新单个列效果很好,因为我手动输入了latandlng值。但是,当我希望 MySQL 更新p表中所有行的 col 时,我使用的查询不会将任何值设置为 col p。我认为它与子查询(?)有关,但我不确定如何使其正常工作。谢谢!

有效的查询

UPDATE listings 
SET p = GeomFromText('POINT(39.948177 -75.174324)') 
WHERE listing_id = '585221';

不设置值的查询

添加了一个WHERE子句,因此我在测试时不会破坏整个表。我实际上想对UPDATE表中的所有行进行查询

UPDATE listings 
SET p = GeomFromText('POINT(lat lng)') 
WHERE listing_id = '585221';
4

3 回答 3

1

那么这个呢(删除 geomfromtext 函数)

更新列表 SET p = POINT(lat, lng) WHERE listing_id = '585221';

或者你可以这样

更新列表 SET p = GeomFromText(CONCAT('POINT(',lat,' ',lng,')'));

于 2012-04-06T13:29:25.047 回答
0

您必须连接您的值以形成适当的参数GeomFromText

UPDATE listings 
SET p = GeomFromText('POINT(' || lat || ' ' || lng || ')') 
WHERE listing_id = '585221';

管道运算符 ( ||) 用于连接字符串。但更好的解决方案是Point直接使用该函数:

UPDATE listings 
SET p = Point(lat, lng) 
WHERE listing_id = '585221';
于 2012-04-06T13:37:54.830 回答
0

对于 SQLite / Spatialite 它是

UPDATE mytable SET location = GeomFromText('POINT('||latitude||" "||longitude||')');
于 2014-08-21T22:11:32.137 回答