Answers:
一个简单的增量就可以解决问题。
UPDATE mytable
SET logins = logins + 1
WHERE id = 12
如果您想更新先前存在的行,或者如果不存在则将其插入,则可以使用REPLACE
语法或INSERT...ON DUPLICATE KEY UPDATE
选项(如Rob Van Dam在他的回答中所示)。
也许您正在寻找类似的东西INSERT...MAX(logins)+1
?本质上,您将运行类似于以下内容的查询-根据您的特定需求,可能会更复杂一些:
INSERT into mytable (logins)
SELECT max(logins) + 1
FROM mytable
INSERT
,不是an UPDATE
。如果要插入,则需要获取最大值并加1。
如果您可以安全地将(firstName,lastName)设置为PRIMARY KEY或至少在其上放置UNIQUE密钥,则可以执行以下操作:
INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)
ON DUPLICATE KEY UPDATE logins = logins + 1;
如果您不能做到这一点,那么您就必须先获取主键是什么,所以我认为您无法在一个查询中实现所需的功能。
ON DUPLICATE KEY UPDATE
不是完全复制安全的!