これがUpsert
と呼ばれるものです。 。 MySQLの構文はかなり奇妙ですが、次のように実行できます。
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
ただし、重複するPKに対してのみ機能します(任意のフィールドに対しては機能しません)。したがって、この場合は、userID
の場合にのみ機能します。 およびeventID
PKを作成し、activityID
のみを変更する必要があります
それ以外の場合は、次のようなIF-ELSEルートを使用できます。
DECLARE mycount INT;
SET mycount = (SELECT COUNT(*) FROM eventcounter WHERE userID=1 AND eventID=1);
IF mycount > 0 THEN
UPDATE eventcounter SET activityID=1 WHERE userID=1 AND eventID=1;
ELSE
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1);
END IF;
免責事項:完全にテストされていないコード