在MySQL中,如果我有一个字段,比如登录,我该如何在sql命令中用1来更新这个字段呢?
我正在尝试创建一个INSERT查询,它创建firstName、lastName和登录。但是,如果firstName和lastName的组合已经存在,则将登录次数增加1。
所以表可能是这样的..
firstName----|----lastName----|----logins
John Jones 1
Steve Smith 3我正在寻找一个命令,当运行时,要么插入一个新的人(即Tom Rogers),要么在John Jones是使用的名字的情况下增加登录。
发布于 2010-05-04 12:41:22
更新条目:
一个简单的增量应该可以解决这个问题。
UPDATE mytable
SET logins = logins + 1
WHERE id = 12插入新行,或更新(如果已存在):
如果您想要更新以前存在的行,或者在它不存在时插入它,您可以使用REPLACE syntax或INSERT...ON DUPLICATE KEY UPDATE选项(就像Rob Van Dam在his answer中演示的那样)。
插入新条目:
或者你正在寻找像INSERT...MAX(logins)+1这样的东西?从本质上讲,您将运行如下所示的查询-根据您的特定需求,可能会更复杂一些:
INSERT into mytable (logins)
SELECT max(logins) + 1
FROM mytable发布于 2010-05-04 13:19:36
如果您可以安全地将(firstName,lastName)作为主键,或者至少将唯一键放在主键上,那么您可以这样做:
INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)
ON DUPLICATE KEY UPDATE logins = logins + 1;如果您不能做到这一点,那么您必须首先获取主键,所以我认为您不能在一个查询中实现您想要的。
发布于 2017-02-01 01:23:20
这更多的是上面一些建议使用ON DUPLICATE KEY UPDATE的答案的脚注,注意,这不是总是复制安全的,所以如果你计划扩展到超过一台服务器,你会想要避免这种情况,并使用两个查询,一个用于验证是否存在,然后第二个查询,如果行存在,则使用UPDATE,或者当行不存在时,使用INSERT。
https://stackoverflow.com/questions/2762851
复制相似问题