mysql - 当 field2 重复时更新 field1

标签 mysql sql sql-update

当 site_id 相同时,我想更新不同记录中的纬度和经度位置。

例如,如果

ID | SiteID | Latitude | Longitude
1      5      74.4545   -35.5466
2      6      74.4545   -35.5466
3      5      75.4584   -45.5966
4      6      79.6545   -36.5496

我希望记录 3 和所有其他与 SiteID 5 匹配的记录获取记录 1 的纬度和经度。同样,记录 2 和 4

如何在 mysql 中执行此操作。

最佳答案

您需要首先找到正确的值,然后进行更新。正确的值为:

select t.*
from t join 
     (select siteId, min(id) as minId
      from t
      group by siteId
     ) ts
     t.id = minId

现在的问题是您无法在查询中更新和引用同一个表。因此,将其放入临时表中,例如 master

这些是主记录。您可以按以下方式进行更新:

update t
    join master
    on t.id = master.id
    set t.latitude = master.latitude,
        t.longitude = master.longitude

关于mysql - 当 field2 重复时更新 field1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753865/

相关文章:

php - 将 'key' 和 'value' 属性包含到 json 响应中

php - MySQL 返回 PDO 占位符名称

MySQL 8 + 正则表达式字边界

php - 连接 POS 到电子商务 RESTFUL API

mysql - SQL:选择两个不同的事物并在一个查询中对结果进行计算

mysql - 我正在使用 NOT IN 但速度很慢

mysql - 根据值选择要更新的列

sql - 基于 SQLite 中的单行切换一系列行的位

php - 1 周后从 MySQL 数据库中删除记录

sql - 数据库设计 : Transactional design approach