- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ON DUPULICATE UPDATE)
MySQLでのデータのINSERT時に既存レコードが更新されない理由
このQ&Aのポイント
- MySQLのINSERT文には、既に存在するレコードの場合に更新処理を行うための構文があります。しかし、質問のような構文では正しく更新されず、新たにレコードが追加されてしまいます。
- 構文の問題点は、ON DUPLICATE KEY UPDATE句に指定するキーが不正確であることです。ID = 1ではなく、TABLE_ID = 2のレコードが更新されるべきです。
- 正しい構文としては、INSERT INTO TABLE_A (TABLE_ID, COUNT) VALUES (2, 1) ON DUPLICATE KEY UPDATE COUNT = 1となります。正しいキーを指定し、更新するカラムも正確に指定することが必要です。
- みんなの回答 (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例であるかどうかは、提示された内容からでは判断できません。
お礼
メッセージありがとうございます。 スイマセン、ご連絡遅くなりました。 ちょとやり方を変えて出来るようになりました。ありがとうございました。