Mysql 将值从一个表复制到另一个具有相同ID的表

Mysql 将值从一个表复制到另一个具有相同ID的表,mysql,Mysql,我正在处理一个1000多行的表,其中两列中的数据已损坏。表\u已损坏。幸运的是,我有一个过时的表备份,其中这两列是完整的表。所以我想:为什么不替换这两列中的值,让其余的保持原样呢 假设table_corrupted和table_outleted都有5列: idINT、nameTEXT、latDOUBLE、lonDOUBLE、commentTEXT …导致此错误:Where子句中的未知列“table_corrupted.id” 经过一些研究,我发现这是因为SQL是从右向左向后计算的。老实说,我没有

我正在处理一个1000多行的表,其中两列中的数据已损坏。表\u已损坏。幸运的是,我有一个过时的表备份,其中这两列是完整的表。所以我想:为什么不替换这两列中的值,让其余的保持原样呢

假设table_corrupted和table_outleted都有5列:

idINT、nameTEXT、latDOUBLE、lonDOUBLE、commentTEXT

…导致此错误:Where子句中的未知列“table_corrupted.id”


经过一些研究,我发现这是因为SQL是从右向左向后计算的。老实说,我没有找到解决办法——有什么建议吗?我做错了什么?

通过执行下面的查询,您可以更好地联接表并简单地更新损坏表中的值

update `table_corrupted`
inner join `table_outdated` on `table_corrupted`.`id` = `table_outdated`.`id`
set `table_corrupted`.`lat`= `table_outdated`.`lat`,
`table_corrupted`.`lon`= `table_outdated`.`lon`

通过执行下面的查询,您可以更好地联接表,并简单地更新损坏表中的值

update `table_corrupted`
inner join `table_outdated` on `table_corrupted`.`id` = `table_outdated`.`id`
set `table_corrupted`.`lat`= `table_outdated`.`lat`,
`table_corrupted`.`lon`= `table_outdated`.`lon`

不要使用插入。使用更新。这个对我有用

UPDATE `table_corrupted` INNER JOIN `table_corrupted` ON (`table_corrupted`.`id` = `table_outdated`.`id`) 
SET `table_corrupted`.`lat` = `table_outdated`.`lat`, `table_corrupted`.`lon` = `table_outdated`.`lon` 

不要使用插入。使用更新。这个对我有用

UPDATE `table_corrupted` INNER JOIN `table_corrupted` ON (`table_corrupted`.`id` = `table_outdated`.`id`) 
SET `table_corrupted`.`lat` = `table_outdated`.`lat`, `table_corrupted`.`lon` = `table_outdated`.`lon` 

您可以在复制时使用:

insert into `table_corrupted` (`id`,`lat`,`lon`) 

    select `id`,`lat`,`lon` from `table_outdated`
    on duplicate key update table_corrupted.lat = table_outdated.lat, table_corrupted.lon = table_outdated.lon
或更新:

update table_corrupted,table_outdated
set table_corrupted.lat = table_outdated.lat, table_corrupted.lon = table_outdated.lon
where table_corrupted.id = table_outdated.id

您可以在复制时使用:

insert into `table_corrupted` (`id`,`lat`,`lon`) 

    select `id`,`lat`,`lon` from `table_outdated`
    on duplicate key update table_corrupted.lat = table_outdated.lat, table_corrupted.lon = table_outdated.lon
或更新:

update table_corrupted,table_outdated
set table_corrupted.lat = table_outdated.lat, table_corrupted.lon = table_outdated.lon
where table_corrupted.id = table_outdated.id

你诊断错了。尝试查找UPDATE语句,这些语句允许您更改现有行中的现有值,而不是插入新行。您完全正确,MatBailie!我和笨蛋在一起:-你把这个诊断错了。尝试查找UPDATE语句,这些语句允许您更改现有行中的现有值,而不是插入新行。您完全正确,MatBailie!我和笨蛋在一起:-p@MatBailie是的,这似乎是正确的。更新我的答案@马特贝利:是的,这似乎是正确的。更新我的答案!不适用于我:非唯一表/别名:表\u已损坏-即使在使用了数据库名称之后也是如此。但拉胡尔·特里帕蒂还是解决了这个问题。非常感谢您的快速回答!不适用于我:非唯一表/别名:表\u已损坏-即使在使用了数据库名称之后也是如此。但拉胡尔·特里帕蒂还是解决了这个问题。非常感谢您的快速回答!