将行插入到mySQL表中,其中目标表具有更多列

时间:2011-08-18 18:00:07

标签: mysql insert replace

我有2张桌子。我想用表2中的行替换表1中的行。 但是,表1有更多列(附加在公共列名后面),因此以下内容不起作用...

replace into table1 select * from table2;

所以我必须列出所有列名......

replace into table1 (col1, col2, ...) select col1, col2, ... from table2;

是否有一种快捷方式可以在不实际列出所有列的情况下执行此类操作?

或者有没有办法从表中生成列名,所以我可以去? ...

replace into table1 <list of columns that are in table2> 
    select <list of columns that are in table2> from table2;

1 个答案:

答案 0 :(得分:0)

INSERT INTO table1 (a,b,c,d)
SELECT field_that_becomes_a, null as becomes_b, field_that_becomes_c, 'static value' as becomes_d
FROM table2

您未在table1中指定的任何字段将仅假设其指定的默认值(如果没有默认值,则终止查询)。