Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在目标表中有更多列的mySQL表中插入行_Mysql_Insert_Replace - Fatal编程技术网

在目标表中有更多列的mySQL表中插入行

在目标表中有更多列的mySQL表中插入行,mysql,insert,replace,Mysql,Insert,Replace,我有两张桌子。我想用表2中的行替换表1中的行。 但是,表1有更多的列(附加在公共列名之后),因此以下内容将不起作用 replace into table1 select * from table2; 所以我必须列出所有的列名 replace into table1 (col1, col2, ...) select col1, col2, ... from table2; 有没有一种快捷方式可以在不列出所有列的情况下执行类似操作 或者有没有一种方法可以从表中生成列名,这样我就可以继续了 rep

我有两张桌子。我想用表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中
从表2中选择;

表1中未指定的任何字段都将采用其指定的默认值(如果没有默认值,则终止查询)。

我对您的答案感到困惑。我不想做的事情是显式地列出列。也就是说,不想写(a,b,c,d),这是你保证事情顺利进行的唯一方法。否则,你最好站在500码后,使用弹射器。也许一些数据最终会进入正确的位置。@Mark-B,如果是这种情况,那么当解决方案根本无法回答问题时,请不要提出解决方案——这只会增加混乱。如果你没有指定,DBMS如何知道要复制哪些列?@feeela。我认为,如果每个表中的列数相同,它只会使用列顺序(我的意思是说,额外的列会附加到表1的公共列名之后)。
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