为了账号安全,请及时绑定邮箱和手机立即绑定

将数据库字段加1

/ 猿问

将数据库字段加1

幕布斯6054654 2019-12-17 10:52:52

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


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


因此表格可能看起来像这样。


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


John               Jones             1

Steve              Smith             3

我需要一个命令,该命令在运行时会插入一个新的人(即Tom Rogers),或者如果使用约翰·琼斯的名字则增加登录名。


查看完整描述

3 回答

?
慕村225694

更新条目:

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


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


查看完整回答
反对 2019-12-17
?
慕的地6264312

如果您可以安全地将(firstName,lastName)设置为PRIMARY KEY或至少在其上放置UNIQUE密钥,则可以执行以下操作:


INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)

ON DUPLICATE KEY UPDATE logins = logins + 1;

如果您不能做到这一点,那么您就必须先获取主键是什么,所以我认为您无法在一个查询中实现所需的功能。


查看完整回答
反对 2019-12-17
?
白衣非少年

您没有说您要做什么,但是您在其他答案的注释中充分暗示了这一点。我认为您可能正在寻找自动递增列


create table logins (userid int auto_increment primary key, 

  username varchar(30), password varchar(30));

则在插入时不需要特殊代码。只是


insert into logins (username, password) values ('user','pass');

MySQL API具有告诉您在客户端代码中执行此语句时创建了哪些用户ID的功能。


查看完整回答
反对 2019-12-17

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信