• ベストアンサー
※ 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となります。正しいキーを指定し、更新するカラムも正確に指定することが必要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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例であるかどうかは、提示された内容からでは判断できません。

NeilMania
質問者

お礼

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

関連するQ&A