如何动态插入一个COLUMN值?

时间:2019-11-01 20:30:18

标签: sql-server

我有一个类似Table1的表,其中有一些记录。我正在尝试使用此查询INSERT INTO Table2 VALUES (1, 'Orange', (SELECT ID FROM Table1));将记录插入到Table2中,我想依次插入Table1中的ID到另一个具有所有其他静态值的Table2中。

**Table1**

ID     Name     
1      Round
2      Edible
3      Blue
4      Seeds

**Table2**

ID     Name     Table1ID
1      Orange      1
2      Orange      2
3      Orange      4

2 个答案:

答案 0 :(得分:3)

  

我想将表1中的ID依次插入到具有所有其他静态值的表2中。

将静态值用作来自SELECT的{​​{1}}查询的一部分

Table1

这在列匹配时才有效。有时列并不完全相同,并且您在INSERT INTO Table2 SELECT 1, 'Orange', ID FROM Table1 中没有所有值。在这种情况下,您仍然可以指定列列表。诀窍不是使用Table2关键字。

VALUES

现在,INSERT INTO Table2 (ID, Table1ID) SELECT 0, ID FROM Table1 中的Name字段将在每个新行中以Table2结尾。

最后,您可能想从样本数据中创建顺序的“ 1、2、3” ID值。有两种方法可以做到这一点。

第一种方法是,如果此字段是NULL中的 identity 字段。在这种情况下,请不要对新的ID列使用任何内容:

Table2

另一个选择是使用INSERT INTO Table2 (Name, Table1ID) SELECT 'Orange', ID FROM Table1 函数:

row_number()

答案 1 :(得分:1)

您很近。您无法在VALUES中组合SELECTINSERT,而必须选择其中一个。在这种情况下:

INSERT INTO Table2 SELECT 'Two', 0, NULL, ID FROM Table1;