4

我有两个具有相同架构的表。还有很多专栏!

我可以通过执行更新相应表中的记录

update t1 
join t2 on t2.id=t1.id 
set t1.column1=t2.column1,
    t1.column2=t2.column2... 
where t2.columnx > 123;

但是我有很多字段,而且我天生就是一个懒惰的混蛋,他宁愿刮牦牛毛并在 SE 上发帖,也不愿输入列列表(可能缺少 1 个)。

除了一些将列列表写入文本文件等的时髦解决方案之外,是否有有效的 mySQL 语法可以跳过所有列的显式列表并且更像 INSERT...SELECT?

4

2 回答 2

4
REPLACE INTO t1 SELECT * FROM t2 WHERE columnx>123;
于 2012-08-02T19:16:51.503 回答
1

尝试使用REPLACE INTO ... SELECT ...语法http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE INTO t1 SELECT t2.* FROM t2, t1 WHERE t1.columnx>123 AND t1.id=t2.id;

警告!未测试!

id仅当表在列上具有唯一索引时,此代码才有效。

于 2012-08-02T19:21:20.053 回答