首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数据库字段递增1

将数据库字段递增1
EN

Stack Overflow用户
提问于 2010-05-04 12:40:14
回答 4查看 206.5K关注 0票数 171

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

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

所以表可能是这样的..

代码语言:javascript
复制
firstName----|----lastName----|----logins

John               Jones             1
Steve              Smith             3

我正在寻找一个命令,当运行时,要么插入一个新的人(即Tom Rogers),要么在使用John Jones的情况下增加登录。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-04 12:41:22

更新条目:

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

代码语言:javascript
复制
UPDATE mytable 
  SET logins = logins + 1 
  WHERE id = 12

插入新行,或更新(如果已存在):

如果您想要更新以前存在的行,或者在它不存在时插入它,您可以使用REPLACE syntaxINSERT...ON DUPLICATE KEY UPDATE选项(就像Rob Van Damhis answer中演示的那样)。

插入新条目:

或者你正在寻找像INSERT...MAX(logins)+1这样的东西?从本质上讲,您将运行如下所示的查询-根据您的特定需求,可能会更复杂一些:

代码语言:javascript
复制
INSERT into mytable (logins) 
  SELECT max(logins) + 1 
  FROM mytable
票数 321
EN

Stack Overflow用户

发布于 2010-05-04 13:19:36

如果您可以安全地将(firstName,lastName)作为主键,或者至少将唯一键放在主键上,那么您可以这样做:

代码语言:javascript
复制
INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)
ON DUPLICATE KEY UPDATE logins = logins + 1;

如果您不能做到这一点,那么您必须首先获取主键,所以我认为您不能在一个查询中实现您想要的。

票数 74
EN

Stack Overflow用户

发布于 2010-05-04 13:06:39

你没有说你想要做什么,但你在另一个答案的评论中暗示得足够好了。我想您可能正在寻找一个自动增量列

代码语言:javascript
复制
create table logins (userid int auto_increment primary key, 
  username varchar(30), password varchar(30));

那么在插入时就不需要特殊的代码了。只是

代码语言:javascript
复制
insert into logins (username, password) values ('user','pass');

当您在客户机代码中执行此语句时,MySQL API有一些函数可以告诉您创建了什么用户in。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2762851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档