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