使用同一个表中其他列的值更新MySQL列

时间:2012-04-06 13:20:43

标签: php mysql sql

我刚刚创建了一个新的GEOMETRYp,需要根据cols p和{中的现有值为lat填充表中所有现有行的值{1}}。

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

有效的查询

p

不设置值的查询

添加了UPDATE listings SET p = GeomFromText('POINT(39.948177 -75.174324)') WHERE listing_id = '585221'; 子句,因此在测试时我不会销毁整个表。我实际上想对表中的所有行执行WHERE查询

UPDATE

3 个答案:

答案 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||')');