SQL Server:从另一个表中选择插入表

时间:2017-02-07 11:02:42

标签: sql-server

我知道如何通过从另一个表中选择来插入,但我的问题有点复杂。我有如下表格。

表1:

Col1 | Col2 | Col3 | ..... | Col20

表2:

Col1 | Col2 | Col3 | ..... | Col20

两个表都相同。我想要做的是将表1中的所有值插入表2,但留下一列(比如Col20)。我想用我的自定义值插入该列。我可以通过映射1到1列来完成此操作。

Insert into table1(Col1, Col2, ..., Col20) 
    select Col1, Col2, ..., @customvalue 
    from table2

我会用这种方式,但我必须在存储过程中多次使用此查询,这使得存储过程冗长。但我想缩短这个查询。还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:1)

  

...但我必须在存储过程中多次使用此查询,这会使存储过程冗长....

最简单的方法是创建一个只执行插入的存储过程,然后在主存储过程中需要时调用它:

CREATE PROCEDURE CopyFromTable1ToTable2
(
    @CustomValue int -- or whatever data type you need
)
AS

INSERT INTO Table1 (Col1, Col2... Col120)
SELECT Col1, Col2,.... @CustomValue
FROM Table2

然后,在您的主程序中,只需执行以下操作:

EXEC CopyFromTable1ToTable2 1
...
EXEC CopyFromTable1ToTable2 3

等等。

答案 1 :(得分:0)

尝试使用用户定义的表类型作为第二个表列集。将table2中的所有必需列定义为此新表类型。然后使用此表类型对象在查询中使用它来减少所需的代码。您可以构建新的UDF以供其重复使用,并将此新类型作为其参数之一传递。

https://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx

我想你可以在存储过程中减少一些重复的SQL代码。它会使你的代码更加模块化和整洁。