【MySQL】無いならINSERT、あるならUPDATEする、ON DUPLICATE KEY UPDATE構文

【MySQL】無いならINSERT、あるならUPDATEする、ON DUPLICATE KEY UPDATE構文

MySQLでレコードが無いならINSERT、あるならUPDATEする、ON DUPLICATE KEY UPDATE構文の使い方

php関連記事

関連記事をもっとみる

checkboxテーブルを作成

このようにcheckboxテーブルを作成します。
id(AUTO_INCREMENT)
user_id:ユーザーid
category:カテゴリ
check_id:カテゴリマスタのid
status:選択状態

カラムに対してユニークインデックスを付ける

user_id、category、check_idに対してユニークインデックスを付ける。

SQL

alter table service_plans add unique idx_user_category (user_id, category, check_id);

これで、user_id、category、check_idが一致するレコードがある場合は、statusをUPDATEするし、
一致しない場合は、INSERTするようになる。

ON DUPLICATE KEY UPDATE構文をつかう

INSERT INTO checkbox
  (user_id, category, check_id, status)
VALUES 
  (:user_id, :category, :check_id, :status)
ON DUPLICATE KEY UPDATE 
  status = VALUES (status)

コメント

タイトルとURLをコピーしました