我有以下查询(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
答案 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计数。)