SQL Server 2012对临时表中的表1进行条件更新

时间:2016-08-27 12:22:27

标签: sql-server

我有2个表1 [dbo].[t_Olympic_Country],其中我有所有县名单,但人口和GDP是空的。现在我有第二张表,其中大多数国家都有人口和GDP数据,但它没有相同数量的数据。如果cuntry名称与[dbo].[temptable1]匹配,我想从第二个临时表[dbo].[t_Olympic_Country]输入第一个[dbo].[t_Olympic_Country]的GDP和人口值。我的意思是[dbo].[t_Olympic_Country]的条件批量更新。

我尝试过以下错误:

INSERT INTO [dbo].[t_Olympic_Country](
[GDP]

)
SELECT 
temp.[GDP]
FROM  [dbo].[temptable1] temp
WHERE (temp.[Country_Name] IN (SELECT tl.[Country_Name] FROM [dbo].[t_Olympic_Country] tl)) 
and  temp.Country_Name not like 'Indep. Olympic Participants'
order by temp.[Country_Name]

Msg 515,Level 16,State 2,Line 1

  

无法将值NULL插入列' Country_Id',table' Olympic.dbo.t_Olympic_Country&#39 ;;列不允许空值。 INSERT失败。       该语句已终止。 ASC

请查看我的表格结构如下:

[DBO] [t_Olympic_Country]:

Country_Id  Country_Name    Country_Size    c_population    GDP
1            Afghanistan            Null    Null            NULL
2            Albania                Null    Null            NULL
3            Algeria                Null    Null            NULL
4            American Samoa         Null    Null            NULL
5            Andorra                Null    Null            NULL

[DBO] [temptable1]:

Country_Name    GDP                 c_population
Afghanistan     20038215159.38730   31627506
Albania         13211513725.58810   2894475
Algeria         213518488688.12000  38934334
American Samoa  645000000.00000     55434
Andorra         3249000000.00000    72786

2 个答案:

答案 0 :(得分:0)

你有"国家"在两个表中。所以我认为你不需要插入新的记录就需要更新匹配的记录。你可以用JOIN运行更新查询。 如下面的查询

group_by(data, -x)

根据您的逻辑包含其他WHERE条件

答案 1 :(得分:0)

是非常感谢有效。

nodetool