Mysql - 使用目标列使用select *进行更新和插入

时间:2016-10-13 14:33:37

标签: mysql

update table1 t1
inner join
table2 t2 on
t1.a = t2.a
set t1.b = t2.b,
t1.c = t2.c;

此代码用于在列a上连接2个表。我的问题是我有大约500列我想要更新,目前正在编写代码中的500列中的每一列

t1.500 = t2.500;

这样可行,但速度慢且效率低。有谁知道如何从table2中选择*来更新table1,保持连接在t1.a = t2.a?所有列名都完全匹配,并插入table2中的所有列。虽然我知道这是不正确的,但正在考虑下面这样的事情。谢谢!

update table1 t1
inner join
table2 t2 on
t1.a = t2.a
set t1.* = t2.*;

1 个答案:

答案 0 :(得分:0)

我认为没有办法在mysql中使用通配符进行更新查询。不知道它是否适合您的问题,但您可以尝试这种解决方法。 :

DELETE FROM table2 WHERE id IN (<ids>);

删除table2中满足给定条件的所有记录。然后将table1中的相应记录插入table2。

INSERT INTO table2
SELECT * FROM table1 WHERE id IN (<ids>);