- 締切済み
INSERT INTO文教えて下さい。Oracle9i
KEY1,KEY2をもとに、 TableAに存在して、 TableBに存在しないレコードをTableBにINSERTするSQL文 TableA Key1,key2,field1,field2 001,1,1,3 001,1,2,3 003,1,2,3 004,1,2,3 TableB key1,key2,field1,field2 003,1,2,3 004,1,2,3 存在しないレコード 001,1 ↓ これをTableBにINSERTする。 その場合、field1は小さいものを使用する つまり、 001,1,1,3 というレコードを作成する
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- PAPA0427
- ベストアンサー率22% (559/2488)
こんなんはいかかでしょう? INSERT INTO TableB SET (Key1,Key2,Field1,Field2) = ( SELECT Key1,Key2,Field1,Field2 FROM TableA MAINUS SELECT Key1,Key2,Field1,Field2 FORM TableB ) 副問合せで、テーブルAの内容から、テーブルBの内容を引いたものが、INSERTされます。
- kazuho_goo
- ベストアンサー率56% (34/60)
TableAの中で ・TableBにないレコード ・その中のKEY1が最小のもの で私の理解はあっていますか? これでどうでしょう? insert into TableB (KEY1, KEY2) select min(KEY1), KEY2 from TableA SRC where not exists (select KEY1 from TableB DST where DST.KEY1 = SRC.KEY1 and DST.KEY2 = SRC.KEY2 ) group by KEY2 ; 試していませんので期待した結果が得られない場合があります。 また not existsでもnot inでもFULL ACCESSなので パフォーマンスはかなり悪いですが...。すみません。