我有两个包含数千条记录的临时表。以下是表结构。
#TmpCity
ID | CityName
1 | test
#Location
ID | LocationName
1 | abc
2 | xyz
3 | etc
我有2个物理表城市和位置具有相同的架构,其中位置表包含外键CityID,它将是城市表的自动递增主键。我需要将 #tmpCity 的数据添加到城市表,将 #tmpLocation 添加到位置表。
我不能使用 INSERT INTO 作为插入的每个城市记录我必须为 scopeIdentity 插入该城市的位置记录,因为我想要大量的记录避免像循环或游标一样逐行操作。 实现这一目标的最佳方法是什么。
答案 0 :(得分:1)
INSERT INTO [dbo].[City]([CityName])
Select [CityName] from [dbo].[#TmpCity]
INSERT INTO [dbo].[Location]([CityId],[LocationName])
Select (select TOP(1) tab1.[CityId] from [dbo].[City] as tab1
join [dbo].[#City] as tab2 on tab1.[CityName]=tab2.[CityName]
where tab2.[ID]=loc.[CityId]),loc.[LocationName] from [dbo].[#Location] as loc