INSERT ... ON DUPLICATE KEY UPDATE
を使用してみてください
ON DUPLICATE KEY UPDATEを指定し、UNIQUEインデックスまたはPRIMARY KEYに重複値を引き起こす行が挿入された場合、MySQLは古い行のUPDATEを実行します。
たとえば、列aがUNIQUEとして宣言され、値1が含まれている場合、次の2つのステートメントは同様の効果があります。
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
(aが自動インクリメント列であるテーブルの場合、効果は同じではありません。自動インクリメント列の場合、INSERT
ステートメントは自動インクリメント値を増やしますが、UPDATE
しません。)
ON DUPLICATE KEY UPDATE句には、コンマで区切って複数の列割り当てを含めることができます。
ON DUPLICATE KEY UPDATEを使用すると、行ごとの影響を受ける行の値は、行が新しい行として挿入された場合は1、既存の行が更新された場合は2になります。
これがお役に立てば幸いです。