小编典典

将数据库字段增加 1

all

使用 MySQL,如果我有一个字段,比如登录,我将如何在 sql 命令中将该字段更新为 1?

我正在尝试创建一个 INSERT 查询,该查询创建 firstName、lastName 和登录名。但是,如果 firstName 和 lastName
的组合已经存在,则将登录次数增加 1。

所以桌子可能看起来像这样..

firstName----|----lastName----|----logins

John               Jones             1
Steve              Smith             3

我正在执行一个命令,该命令在运行时会插入一个新人(即 Tom Rogers),或者如果使用的名称是 John Jones 则增加登录次数。


阅读 56

收藏
2022-08-19

共1个答案

小编典典

更新条目:

一个简单的增量应该可以解决问题。

UPDATE mytable 
  SET logins = logins + 1 
  WHERE id = 12

插入新行,或者如果已经存在则更新:

如果您想更新先前存在的行,或者如果它不存在则插入它,您可以使用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 into mytable (logins) 
  SELECT max(logins) + 1 
  FROM mytable
2022-08-19