• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件付きでデータの置換と新規挿入)

データの置換と新規挿入に関する条件付き操作

このQ&Aのポイント
  • データの置換と新規挿入についての条件付き操作の方法を教えてください。
  • tbl_1というテーブルにはid(主)、u_id、date、field1、field2というフィールドがあります。u_idとdateがテーブルのレコードと一致する場合、field1とfield2のデータを置換または新規挿入したいです。
  • 現在の試した方法では、一つの命令文で処理を行いたいが、シンタックスエラーが発生し、u_idとdateが一致するレコードがあっても新規レコードとして挿入されてしまいます。どのようにすれば一つの命令文で処理できますか?

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

  • ベストアンサー
回答No.1

MySQLの質問をする場合は、MySQL 5.0、5.1といったレベルまで、最低限バージョンを明記してください。 大きな機能拡張に加え、一部の仕様変更があります。 「(u_id,`date`)の複合キーで重複した場合」とのことであり、primary key または uniqueキーにした上で、insert文の「on duplicate key update」構文を利用することで実装可能です。 replace文は、格納済みの行の特定列を更新するのでなく、行自体を置換してしまうのだったと記憶しています。 id列というprimary keyが必要なのかどうか不明ですが、uniqueキーを定義すると、例えば次のようなSQLになります。 -- 定義例 drop table if exists tbl1; create table tbl1 (id int primary key auto_increment ,u_id int ,`date` date ,field1 int ,field2 int ,unique(u_id,`date`) ); -- (u_id,`date`)が同一の行が存在しなければ追加、存在すれば更新 insert into tbl1 values(null,5,'2011-04-17',0,0) on duplicate key update field1=values(field1),field2=values(field2) ;

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html
leoism666
質問者

お礼

chukenkenkou様: 回答ありがとうございました。 ヒントだけでなく、そのものずばりのコードまで書いていただいて、 大変助かりました。 ご教示頂いたコードですんなりと問題を解決することができました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A