2017-03-09 6 views
0

私はテーブルAとBがあると、テーブルAは、IDの60行を含むIDとテーブルBの30行を含む、私はここに存在していない使用してA.IDにB.IDを挿入します。 B.IDは、表AにSQLが存在しない場所とデータ型キャストを使用する正しい方法は何ですか?

INSERT INTO A(
ID) 
SELECT ID 
FROM B 
WHERE NOT EXISTS (Select ID From A WHERE A.ID = B.ID) 

存在しない場合は、表B IDは、私は私のサブクエリでいくつかの問題があると思い表Aに挿入されます。これを修正する方法についてアドバイスをしてください。

と仮定A.IDはNVARCHAR(200)を入力とB.IDはfloat型であるです。

INSERT INTO A(
ID) 
SELECT Cast(Cast(ID as Float)as Nvarchar) 
FROM B 
WHERE NOT EXISTS (Select ID From A WHERE A.ID = B.ID) 

しかし、まだエラーがあります。データ型nvarcharをfloatに変換中にエラーが発生しました。

TIA!

+3

あなたが持っている問題は何ですか? –

+0

の可能性のある重複した[SQL ServerのINSERT INTO SELECTクエリで重複を回避する方法?](http://stackoverflow.com/questions/2513174/how-to-avoid-duplicates-in-insert-into-select-query- in-sql-server) – Mark

+0

okこの問題は解決しました。ありがとうございました。しかし、別のエラーが表示されます。データ型nvarcharをfloatに変換中にエラーが発生しました。 –

答えて

2

使用ではなく、パフォーマンス向上のためのサブクエリの参加

INSERT INTO A(ID) 
SELECT CAST(B.ID AS nvarchar(200)) 
FROM A RIGHT JOIN B ON A.ID = CAST(B.ID AS NVARCHAR(200)) WHERE A.ID IS NULL 
+0

それは魅力のように機能します。 –

関連する問題