mysql查询在条目已存在时插入或更新
我有以下查询user_id不是,也不能是主键,因为根据表的另一列,每个用户都有许多条目。我用了重复的钥匙,但不起作用。它仍然会添加一个新行。有什么想法吗mysql查询在条目已存在时插入或更新,mysql,Mysql,我有以下查询user_id不是,也不能是主键,因为根据表的另一列,每个用户都有许多条目。我用了重复的钥匙,但不起作用。它仍然会添加一个新行。有什么想法吗 INSERT INTO profile (user_id, correct) VALUES(". $user_id . ", correct + 1) ON DUPLICATE KEY UPDATE correct=correct+1 编辑 因此,如果此用户id存在行,我想更新此条目并设置correct=correct+1,而不是再次使用用户
INSERT INTO profile (user_id, correct) VALUES(". $user_id . ", correct + 1)
ON DUPLICATE KEY UPDATE correct=correct+1
编辑
因此,如果此用户id存在行,我想更新此条目并设置correct=correct+1,而不是再次使用用户id和correct=1创建新条目
INSERT IGNORE INTO profile (user_id, correct)
VALUES ($user_id, 0);
UPDATE profile SET correct = correct + 1
WHERE user_id = $user_id; -- updates 0 to 1
或:
如果未找到:
INSERT INTO profile (user_id, correct)
VALUES ($user_id, 1);
我更喜欢第二种变体。
第一个变体要求用户id具有唯一的约束。主键计数 你的问题对我来说没什么意义。如果用户id不是唯一的,那么如何知道要更新哪一行?让它听起来像user_id加上其他一些未命名的列应该一起成为主键;但是您有一个INSERT语句,它没有为另一列设置值。我认为您可能需要重新检查表设计,并确保有一个合理的主键。
INSERT INTO profile (user_id, correct)
VALUES ($user_id, 1);