タグ: #MySQL
INSERT INTO tbl (hat, mittens, name)
VALUES ('yellow','purple','jimmy')
ON DUPLICATE KEY UPDATE name = CASE WHEN name <> VALUES(name)
THEN VALUES(name) ELSE name END
, last_update = CASE WHEN name <> VALUES(name)
THEN now() ELSE last_update END;
MySQLで、INSERTしたいがもし、既にあった場合には条件付きでデータを更新したいとき、INSERT INTO 〜〜 ON DUPLICATE KEY UPDATE hoge = CASE WHEN hoge a THEN x ELSE y END;という構文を使います。
しかし、全てのカラムを更新したいなら、REPLACE文を使いましょう。無ければINSERT、既にユニーク制約によって重複データが存在すればUPDATEとなります。
11ヶ月前 | 固定リンク | 2011年 6月 6日 | 
