初めて自分の家と他人の家が違う、と意識した時

Oracle初心者です。
宜しくお願い致します。

MERGE文を1つのテーブルに対して行いたいのですが、エラーになってしまいます。
すみませんが、教えて下さい。

MERGE INTO TEST A USING TEST B
ON (A.SEQ_NO = B.SEQ_NO
AND A.SEQ_NO2 = B.SEQ_NO2
AND A.SEQ_NO3 = B.SEQ_NO3)
WHEN MATCHED THEN
UPDATE文

WHEN NOT MATCHED THEN
   INSERT文;

A 回答 (2件)

エラーメッセージ、UPDATE文、INSERT文、テーブル内容


を書けば直ぐに回答がもらえると思います。

試しに↓でやるとうまく行きませんか?

MERGE INTO TEST A USING
(select SEQ_NO,SEQ_NO2,SEQ_NO3
from TEST
group by SEQ_NO,SEQ_NO2,SEQ_NO3
) B
ON (A.SEQ_NO = B.SEQ_NO
AND A.SEQ_NO2 = B.SEQ_NO2
AND A.SEQ_NO3 = B.SEQ_NO3)
WHEN MATCHED THEN
UPDATE文
WHEN NOT MATCHED THEN
INSERT文;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

(select SEQ_NO,SEQ_NO2,SEQ_NO3
from TEST
とUSING句はしないとダメなのでしょうか?

通常のテーブル名で書くと、その下の「A.SEQ_NO」でエラーとなってしまいます。

お礼日時:2009/10/29 11:25

MERGEを使って何をしたいのか理解できていないのですが・・


自分自身に、MERGEって、普通はありえない使い方ですよね。
質問に書かれている条件であれば、WHEN-MATCHEDにしか該当しないと思うので、
MERGEでなく、UPDATEを使うのが普通なのではないですかね?

ちなみにエラーに関してですが、MERGEのONに指定する条件が、単一行同士を結合する条件でなければ、
MERGEは適正な動作をしないと思いますよ。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

SELECT文で存在チェックをし、INSERT文とUPDATE文に分けます。

お礼日時:2009/10/30 08:19

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報

このQ&Aを見た人がよく見るQ&A