繁体   English   中英

mysql Query Insert into或在条目已存在时更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM