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
我有 2 table 存储信息。例如: Table 1 包含人:
ID NAME CITY
1 BOB 1
2 JANE 1
3 FRED 2
CITY 是另一个 table:
的 idID 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