SQL 插入来自不同 table 的值

SQL Insert with value from different table

我有 2 table 存储信息。例如: Table 1 包含人:

ID         NAME         CITY

1          BOB          1
2          JANE         1
3          FRED         2

CITY 是另一个 table:

的 id
ID         NAME

1          Amsterdam
2          London

问题是我想插入接收到的数据格式:

ID         NAME         CITY

1          PETER        Amsterdam
2          KEES         London
3          FRED         London

鉴于城市列表是完整的(我从来没有收到不在我的列表中的城市)我如何将(new/received 来自外部的)人插入 table 中正确的城市 ID?

我应该在尝试插入它们之前替换它们,还是有一种性能友好的方式(我可能必须一次插入数千行)让 SQL 为我做这件事?

我使用的 SQL 服务器是 Microsoft SQL Server 2012

首先,加载要插入的数据到table.

然后,你可以只使用 join:

insert into persons(id, name, city)
     select st.id, st.name, c.d
     from #StagingTable st left join
          cities c
          on st.city = c.name;

注意:persons.id 应该是标识列,因此没有必要插入它。

insert into persons (ID,NAME,CITY) //you dont need to include ID if it is auto increment
values 
(1,'BOB',(select Name from city where ID=1)) //another select query is getting Name from city table

如果您想一次添加 1000 行,如果您使用像这样的存储过程,那就太好了 link