アプリ版:「スタンプのみでお礼する」機能のリリースについて

一定範囲(複数)のデータを追加したい場合、
追加する時に、既に既存のデータがある場合は、
データを上書きし、無い時は、データを新規追加
する、ということをやりたいのですが、SQL文で、
そのような命令はあるでしょうか。
Excelで打ち込んだ、数件のデータを、データベース
用の別のExcelシートに一気に保存したい時に、
この問題が生じてしまいます。
(INSERT命令のみだと、すべて新規となるので、
重複データができてしまい、何が新規でなにが新規
でないかをいちいち区別し、処理を分けるのも
困難です)。
非常に初歩的かもしれませんが、お願いします(ちなみに、ExcelVBAで、SQLを使おうと思っています)。

A 回答 (3件)

>何が新規でなにが新規でないかをいちいち区別し、処理を分ける


処理を分けるのはやらないとしょうがないです。
とりあえず、
UPDATEでやってみて
エラーになったら
INSERTするというのはどうでしょうか
    • good
    • 0

一発での処理(SQL文)はできないでしょうね。



>何が新規でなにが新規でないかをいちいち区別し、処理を分けるのも困難です

処理ロジックとしては・・・

追加データの主キーで検索
→ヒットしたら、ヒットしたレコードを削除し、追加データをINSERTする。
→ヒットしなかったら、そのまま追加データをINSERTする。

で、どうでしょうか?
    • good
    • 0

主キーが存在するのであれば(重複と言っているわけですから当然あるはずです)、まず主キーで元のテーブルの一致するレコードを全て消します。



その後、Insertすれば問題ありません。

例)
Delete From Table_org Where 主キー in (Select 主キー From Table_App)
Insert Into Table_org Select * From Table_App
    • good
    • 0
この回答へのお礼

いろいろ回答ありがとうございました。
回答を見た限り、一発でこのような処理をするのは
無理そうですね。
処理を分けてやってみます。

お礼日時:2004/12/15 21:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!