Mysql 更新整行

Mysql 更新整行,mysql,Mysql,MySQL是否有更新语法,允许我更新整行(而不是单独的列)?,类似这样: UPDATE `table1` LEFT JOIN `table2` USING (`myColumn`) SET `table1`.* = `table2`.* table1和table2具有完全相同的结构 列名是可变的,可能会更改 不幸的是,我不能使用查询,因为表的设计很糟糕,我不能随意修改它们。加入列没有唯一的索引,它只有一个普通索引。“列名是可变的,可能会更改”-这是非常错误的,

MySQL是否有更新语法,允许我更新整行(而不是单独的列)?,类似这样:

UPDATE      `table1`
LEFT JOIN   `table2` USING (`myColumn`)
SET         `table1`.* = `table2`.*
  • table1
    table2
    具有完全相同的结构

  • 列名是可变的,可能会更改


不幸的是,我不能使用查询,因为表的设计很糟糕,我不能随意修改它们。加入列没有唯一的索引,它只有一个普通索引。

“列名是可变的,可能会更改”-这是非常错误的,如果您依赖列顺序而不是列名称,总有一天它会击中您的头部。更新将使用明确的列名称:.

“表1和表2具有完全相同的结构”违反了正交设计原则;此外,“[t]列名……可能会更改”表明模式设计不佳。你能详细说明一下这是如何成为一个需求的吗?@eggyal,我同意模式设计得很糟糕(在很多方面)。不幸的是,该表有100列,我不想为查询手动写出列表(因为将来会有更改)。@eggyal,相同的结构不是因为设计不好,一个是临时表:
CREATE temporary table
table2`LIKE
table1
。我正在合并CSV文件中的大量数据。在这种情况下,
table2
包含哪些数据?也许
更新
可以在没有临时表的情况下执行。@eggyal,我正在使用
加载数据
将CSV导入临时表,然后我必须找到已经存在的记录,并在使用新数据更新活动表之前进行筛选。
表2
表1
结构的精确副本,我是用
创建临时表table2创建的,类似于table1
您可以再创建一个临时表id,存储需要更新的行id,从table1中删除该行,然后
插入到table1中选择table2.*从table2右键连接id上的id。id=table2.id
。这个解决方案是丑陋的,但在这种情况下,我认为任何解决方案都是丑陋的。