2011年 6月 6日 はてなブックマーク -
タグ: #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日 | このエントリーを含むはてなブックマーク