将行插入表中,只剩下一列,而不使用列名

时间:2014-02-27 15:41:10

标签: sql sql-server

我有两个相同的表A和B.在这个意义上它们都具有相同类型的具有相同名称和数据类型的列。

A有100列,B有101列。

只有它们之间的区别是B有一个额外的列。

现在我正在尝试插入从A到B的列。

如果两个表具有相同的列数,则可以使用以下insert语句。

 insert into B 
select * from A;

由于两个表的列数不同,我必须在insert语句中写下所有列名。

insert into B (col1,........col100)
select col1....col100 from A;

现在我的问题是..有没有办法我们可以用更简单的方式编写语句,如下所示,以便可以保存代码中的时间和行数。

insert into B (exclude column 101)
    select * from A;

3 个答案:

答案 0 :(得分:2)

如果b的最后一列是与列不同的列,并且a和b列的顺序相同,b的最后一列可以为null:

 INSERT INTO b SELECT *,NULL FROM a;

如果没有,请输入任何有效值而不是NULL。

答案 1 :(得分:1)

由于这是标记的sql-server,我猜你正在使用SSMS编写查询..正确设置你的选项...见下图。

ssms option screen

然后切换到文本输出模式(CTRL-T)

SELECT * FROM TABLENAME WHERE 1=2

从此处复制并粘贴csv列列表...并根据需要混合并匹配列的顺序。

column list as csv

答案 2 :(得分:0)