我有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
答案 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