带有来自不同表

时间:2016-04-25 11:39:52

标签: sql sql-server insert sql-insert insert-into

我有2个表存储信息。例如: 表1包含人员:

ID         NAME         CITY

1          BOB          1
2          JANE         1
3          FRED         2

CITY是另一张桌子的ID:

ID         NAME

1          Amsterdam
2          London

问题是我想以下列格式插入我收到的数据:

ID         NAME         CITY

1          PETER        Amsterdam
2          KEES         London
3          FRED         London

鉴于城市列表已完成(我从未收到过不在我名单中的城市),我如何将(新的/从外部接收的)人员插入到具有正确城市ID的表格中?

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

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

2 个答案:

答案 0 :(得分:2)

首先,加载要插入表格的数据。

然后,您可以使用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应该是标识列,因此不需要插入它。

答案 1 :(得分:1)

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