【问题标题】:MySQL replace row values based on custom criteriaMySQL 根据自定义条件替换行值
【发布时间】:2023-04-03 20:27:01
【问题描述】:

我有一个包含以下列的读数表:

ID、值、经度、纬度、数据时间戳

我总是有新的阅读,所以我需要做以下事情:

  1. 如果新记录具有唯一的经纬度对,则 插入一条新记录。
  2. 如果新记录有重复的经度 & 表中的纬度对,然后更新“值”和 '数据时间戳'。

在每个新批次中,我都会收到数百条记录,因此如果可能的话,我想使用类似 REPLACE 语句的语句,而不是 DELETE 和 INSERT。

请帮忙。谢谢

【问题讨论】:

  • 我正在使用 MySQL 工作台

标签: mysql replace sql-delete sql-insert


【解决方案1】:
  1. 在经度、纬度上添加唯一索引
  2. 使用INSERT ... ON DUPLICATE KEY UPDATE语法

见文档here

【讨论】:

  • 谢谢。我按照您的建议添加了一个哈希列(MD5 哈希连接了长的纬度列)。然后将该列设置为唯一,然后使用以下查询:INSERT INTO readings (val,gpslong,gpslat,datatime,readinghash) VALUES (66,'35.228555','32.225083','2015-09-09 19: 37:15',md5(concat(netid,gpslong,gpslat))) 重复密钥更新 val=66,datatime='2015-09-09 19:37:15';
猜你喜欢
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2018-11-13
  • 2019-03-23
  • 2021-10-24
  • 2020-04-24
相关资源
最近更新 更多