0
レコードが存在するかどうかをチェックしたいテーブルが1つあります。新しいローを挿入して前のローを更新しないと、それだけを残します。私はここで以下のようにマージを使用することができますか?同じターゲットとソーステーブルとのマージ
CREATE TABLE a
(keycol INT PRIMARY KEY,
col1 INT NOT NULL,
col2 INT NOT NULL,
col3 INT NOT NULL);
INSERT INTO a VALUES (1,0,0,0),(2,0,0,0);
MERGE INTO a
USING select 1 from a where col1 = 3
WHEN NOT MATCHED THEN
UPDATE SET
col2 = 2,
col2 = 2,
col3 = 2
where col1 = 3
WHEN NOT MATCHED THEN
INSERT (keycol, col1, col2, col3)
VALUES (4, 0, 0, 0)
おかげで、
は、第1の条件はする必要があります 'WHEN MATCHED' - あなたは、更新する行を持っていないとするときは何も質問をお読みください – JNK
を挿入する必要がありますとき' MATCHED'はありません私が挿入して更新したい一致 – user570715
私はそれを読んで、あなたの提案された解決策はナンセンスです。一致するものがない場合は、**何**を更新しますか?更新する行はありません。あなたはテーブルの他のすべての行を更新したいですか? – JNK