gpt4 book ai didi

MySQL如果行存在则更新否则插入

转载 作者:行者123 更新时间:2023-11-29 06:28:37 25 4
gpt4 key购买 nike

我正在尝试创建一个网站,人们可以在其中注册事件 + 分配给该事件的事件。他们可以选择要参加哪一个,甚至两个都参加。

为此我制作了一个名为“eventCounter”的表 Image of table
userID、eventID、activityID都是FK指向其他表。

他们应该能够更新他们当前的“状态”,这样他们就可以在报名参加事件后加入事件。

所以我的问题是:我如何制作一个If else 说明如果行存在则更新else 插入

IF EXISTS(select userID, eventID, activityID from eventCounter where userID=1 and eventID=1)
THEN
UPDATE eventcounter SET activityID=1 WHERE userID=1;
ELSE
INSERT INTO eventcounter (userID, activityID) VALUES(1,1)

我认为 ON DUPLICATE 键不起作用,因为我有 2 列需要检查?

最佳答案

这就是所谓的 Upsert。 MySQL 语法很奇怪,但你可以这样做,比如:

INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)

虽然它只适用于重复的 PK(不适用于您喜欢的任何领域),所以在这种情况下,它只有在 userIDeventID 组成 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;

免责声明:完全未经测试的代码

关于MySQL如果行存在则更新否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com