2016-08-27 12 views
0

2テーブル1 [dbo].[t_Olympic_Country]私はすべての郡リストを持っていますが、人口とGDPは空です。現在、私は人口とGDPデータを持つ国のほとんどを持っているが、それは同じ数のデータを持っていない2番目のテーブルを持っています。私は、Cuntry名が[dbo].[t_Olympic_Country]と一致する場合、第2臨時机[dbo].[temptable1]からGDPと人口の値を最初に[dbo].[t_Olympic_Country]に入力したいと思います。つまり、[dbo].[t_Olympic_Country]の条件付き一括更新を意味します。SQLサーバー2012テーブル1のテンポラリテーブルからの条件付き更新

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] 

メッセージ515、レベル16、状態2、行1は、テーブル「オリンピック 'COUNTRY_ID' 列にNULL値を挿入できません:

私はエラーを与える以下のことを試してみました。 dbo.t_Olympic_Country ';列はNULLを許可しません。 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 
+0

「Country_Id」列にNULL以外の値を挿入することも、「Country_Id」が自動インクリメントの新しい表を作成することもできます。この場合、SQL Serverが自動的にIDを割り当てるため、NULLを挿入することはOKです。 –

答えて

0

両方のテーブルに「国」があります。だから、私はあなたが新しいレコードを挿入する必要はないと思うだけ一致するレコードを更新する必要があります。あなたはupdate query wit JOINを実行することができます。クエリ

UPDATE c 
set c.GDP = t.GDP 
From t_Olympic_Country c 
JOIN temptable1 t on c.Country_Name= t.Country_Name 

以下のよう は、あなたのロジックあたりなど、他のWHERE条件に働い

0

はい感謝を含めます。

UPDATE c 
set c.[c_population] = t.[c_population] 
From t_Olympic_Country c 
JOIN temptable1 t on c.Country_Name= t.Country_Name 
where t.Country_Name not like 'Indep. Olympic Participants'