こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLServerでREPLACE/SELECTができるか?

My-SQLでは以下のSQLにより
test01というDBからtest02というDBへ
データをinsertすることができると思います。
また「insert」ではなく「replace」にすることで
同一キーの場合エラーにならず置き換えで
データを登録してくれます。
=======================================
insert into [test01].dbo.test_table
select * from [test02].dbo.test_table
=======================================
そこで上記の「replace」を同じように
SQLServerでできないか知っている方が
おられたら是非ご教授いただきたく。

よろしくお願いいたします。

投稿日時 - 2007-11-07 18:46:27

QNo.3497842

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

REPLACE についてはわかりません。
質問のSQL
=======================================
insert into [test01].dbo.test_table
select * from [test02].dbo.test_table
=======================================
は 当然、既存のtest01の主キーとtest02の値が重複すればエラーになります。
もし、重複を避けたいのであるなら 一旦、一時テーブルに重複しないデータを抽出しておき、その一時テーブルのデータを挿入するといった2ステップになります。

例、一時テーブルへ重複しないデータを出力

SEECT INTBL02.* into #TempTBL1
from [test01].dbo.test_table AS INTBL01
Left Join [test02].dbo.test_table AS INTBL02
ON INTBL01.Mkey1 = INTBL02.Mkey1
Where INTBL01.Mkey1 Is NULL

Insert Into [test01].dbo.test_table
SEECT * FROM #TempTBL1
___________________________________________________________

投稿日時 - 2007-11-08 01:51:49

お礼

NOBNNN様
やはり一時テーブルなどの使用が必要ですか。
できれば1つのSQLで処理できればと思っていたのですが。
ご回答内容もひとつの案として考えて見ます。
回答ありがとうございました。

投稿日時 - 2007-11-08 09:50:52

あなたにオススメの質問