[英]mysql Query Insert into or update when entry already exists
我有以下查询(user_id不是,也不能成为主键,因为每个用户都有很多条目,具体取决于表的另一列)。 我使用重复的密钥,但不起作用。 它仍然添加新行。 有什么想法吗?
INSERT INTO profile (user_id, correct) VALUES(". $user_id . ", correct + 1)
ON DUPLICATE KEY UPDATE correct=correct+1
编辑因此,如果该user_id存在行,我想去更新此条目并设置correct = correct + 1,而不要再次使用user_id并更正= 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
要么:
UPDATE profile SET correct = correct + 1
WHERE user_id = $user_id;
如果找不到:
INSERT INTO profile (user_id, correct)
VALUES ($user_id, 1);
我更喜欢第二种。
第一个变体要求user_id
具有UNIQUE约束。 (PRIMARY KEY计数。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.