在目标表中有更多列的mySQL表中插入行
我有两张桌子。我想用表2中的行替换表1中的行。 但是,表1有更多的列(附加在公共列名之后),因此以下内容将不起作用在目标表中有更多列的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
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