我刚刚创建了一个新的GEOMETRY
列p
,需要根据cols p
和{中的现有值为lat
填充表中所有现有行的值{1}}。
问题:使用下面的查询更新单个列效果很好,因为我手动输入了lng
和lat
值。但是,当我希望MySQL为表中的所有行更新col lng
时,我使用的查询不会将任何值设置为col p
。我认为它与子查询(?)有关,但我不确定如何使其正常工作。谢谢!
有效的查询
p
不设置值的查询
添加了UPDATE listings
SET p = GeomFromText('POINT(39.948177 -75.174324)')
WHERE listing_id = '585221';
子句,因此在测试时我不会销毁整个表。我实际上想对表中的所有行执行WHERE
查询
UPDATE
答案 0 :(得分:1)
然后呢(删除geomfromtext函数)
更新列表 SET p = POINT(lat,lng) WHERE listing_id ='585221';
或者你可以这样做
UPDATE清单SET p = GeomFromText(CONCAT('POINT(',lat,'',lng,')'));
答案 1 :(得分: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';
答案 2 :(得分:0)
对于SQLite / Spatialite,它是
UPDATE mytable SET location = GeomFromText('POINT('||latitude||" "||longitude||')');