mysql查询条目已存在时插入或更新

时间:2011-11-27 23:33:21

标签: mysql

我有以下查询(user_id不是也不能是主键,因为每个用户有很多条目,具体取决于表的另一列)。我使用重复键但不起作用。它仍然添加了一个新行。有什么想法吗?

INSERT INTO profile (user_id, correct) VALUES(". $user_id . ", correct + 1)
ON DUPLICATE KEY UPDATE correct=correct+1

修改 因此,如果此user_id存在行,我想更新此条目并且SET correct = correct + 1并且不再使用user_id创建新条目并再次更正= 1

1 个答案:

答案 0 :(得分:0)

试试这个:

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计数。)