街中で見かけて「グッときた人」の思い出

データをINSERTする際にすでにレコードがある場合、mysqlで
ON DUPULICATE UPDATEで更新処理が出来ると思うのですが
なぜかINSERTされてしまいます…。

ID TABLE_ID COUNT
1 1 1
2 2 2
3 3 3

INSERT INTO TABLE_A SET TABLE_ID = 2, COUNT = 1
ON DUPULICATE UPDATE ID = 1
この構文をした場合に以下のようにしたいのですが
何がいけないのでしょうか…。
お分かりになる方よろしくお願い致します。

ID TABLE_ID COUNT
1 2 1

A 回答 (1件)

まず、要件が明確になっていません。



(1)PRIMARY KEY または UNIQUEキーがどれなのか
(2)(1)で重複がなかった場合、どうしたいのか
(3)(1)で重複した場合、どうしたいのか

また、ON DUPLICATE KEY UPDATEの使い方を誤解しているようです。

例えば、INSERTしようとして、ID列での重複発生時、TABLE_ID列、COUNT列に挿入しようとした値でUPDATEするなら、次のような指定例になります。

INSERT INTO `TABLE_A`
VALUES(1,2,1)
ON DUPLICATE KEY UPDATE
`TABLE_ID`=VALUES(`TABLE_ID`)
,`COUNT`=VALUES(`COUNT`)

この例が希望するもっとも適切なSQL例であるかどうかは、提示された内容からでは判断できません。
    • good
    • 0
この回答へのお礼

メッセージありがとうございます。
スイマセン、ご連絡遅くなりました。
ちょとやり方を変えて出来るようになりました。ありがとうございました。

お礼日時:2010/04/15 22:56

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

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