You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MySQL将经纬度十进制值转换为POINT类型?

解决MySQL中经纬度转POINT类型的UPDATE语法问题

你的两条UPDATE语句报错是因为MySQL不支持UPDATE ... FROM ...这种语法(这是PostgreSQL等其他数据库的写法),针对你的需求,提供两种正确写法:

1. 单表直接更新(推荐,无重复zipcode时使用)

因为每个邮政编码对应唯一的经纬度,无需自连接,直接用当前行的longitude和latitude生成POINT:

UPDATE obe_zipcodes 
SET geo_point = POINT(longitude, latitude);

2. 自连接更新(适用于存在重复zipcode需要关联更新的场景)

如果必须通过自关联匹配数据,MySQL的正确语法是使用JOIN关键字:

UPDATE obe_zipcodes w1
JOIN obe_zipcodes w2 ON w1.zipcode = w2.zipcode
SET w1.geo_point = POINT(w2.longitude, w2.latitude);

补充说明:

  • MySQL的POINT()函数参数格式为POINT(x, y),通常经度(longitude)作为x值,纬度(latitude)作为y值,你的参数顺序是正确的。
  • 你的表使用InnoDB引擎,完全支持POINT空间类型,无需额外配置。

内容的提问来源于stack exchange,提问作者Michael Parisi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:01:09