使用 MySQL,如果我有一个字段,比如登录,我将如何在 sql 命令中将该字段更新为 1?
我正在尝试创建一个 INSERT 查询,该查询创建 firstName、lastName 和登录名。但是,如果 firstName 和 lastName 的组合已经存在,则将登录次数增加 1。
所以桌子可能看起来像这样..
firstName----|----lastName----|----logins John Jones 1 Steve Smith 3
我正在执行一个命令,该命令在运行时会插入一个新人(即 Tom Rogers),或者如果使用的名称是 John Jones 则增加登录次数。
一个简单的增量应该可以解决问题。
UPDATE mytable SET logins = logins + 1 WHERE id = 12
如果您想更新先前存在的行,或者如果它不存在则插入它,您可以使用REPLACE语法或INSERT...ON DUPLICATE KEY UPDATE选项(正如在他的回答中所展示的那样)。
REPLACE
INSERT...ON DUPLICATE KEY UPDATE
如果您可以安全地使 (firstName, lastName) 成为 PRIMARY KEY 或至少在它们上放置一个 UNIQUE 键,那么您可以这样做:
INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1) ON DUPLICATE KEY UPDATE logins = logins + 1;
如果你不能这样做,那么你必须首先获取那个主键,所以我认为你不能在一个查询中实现你想要的。
或者,也许您正在寻找类似的东西INSERT...MAX(logins)+1?本质上,您将运行类似于以下内容的查询 - 根据您的特定需求,可能会更复杂一些:
INSERT...MAX(logins)+1
INSERT into mytable (logins) SELECT max(logins) + 1 FROM mytable