在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;
如果您不能做到这一点,那么您必须首先获取主键,所以我认为您不能在一个查询中实现您想要的。
发布于 2010-05-04 13:06:39
你没有说你想要做什么,但你在另一个答案的评论中暗示得足够好了。我想您可能正在寻找一个自动增量列
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有一些函数可以告诉您创建了什么用户in。
https://stackoverflow.com/questions/2762851
复制相似问题