mysql中先判断数据是不是存在,如存在则增加数量,不存在则增加一条记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中先判断数据是不是存在,如存在则增加数量,不存在则增加一条记录相关的知识,希望对你有一定的参考价值。

目的是实现输入用户名+数量,然后为这个用户增加12345这个编号的物品的数量

characters表结构为guid、name
i_instance表结构为entry、owner_guid、count
其中characters表的guid与i_instance表的owner_guid相对应

我写的是下面的,只能实现用户有数据记录的时候增加数量
但是因为没有判断语句,所以如果该用户名下没有12345的物品记录,运行就会出错
update i_instance, characters
set i_instance.count = count+:count
where characters.guid = i_instance.owner_guid and characters.name=:username and i_instance.Entry = 12345
额,请直接回复如何写这个语句就可以
不用写其他的解决方法, 谢谢

比如想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据就不插入。

首先,在创建表时,将不需要重复的字段设置为unique,然后在插入时,使用insert ignore语句。

例如:(数据库用的是mysql5)
创建一张表用来存储用户:

create table user_info
(
   uid mediumint(10) unsigned NOT NULL auto_increment primary key,
   last_name char(20) not null,
   first_name char(20) not null,
   unique ( last_name, first_name)
);
alter table anser add UNIQUE (last_name,first_name)

插入数据:

insert ignore into user_info (last_name,first_name) values ('x','y');

这样一来,如果表中已经存在last_name='x'且first_name='y'的数据,就不会插入,如果没有就会插入一条新数据。


——————注意,以上是我直接复制粘贴的信息,以下为原创

然后捕捉查询结果,如果确实已经执行了插入操作,那么就结束sql

否则,就执行一次update操作


这样的话,我觉得程序运行性能是较好的

参考技术A 不一定要在mysql语句中判断。在程序里判断一样。追问

如果可以的话,直接写语句就行,其他的解决方法不需要,谢谢

追答

你这sql语句。即使没有12345。报错的也不是你的sql语句报错。

追问

仔细看问题,这语句已经在用户有这个物品时运行会正确添加数量,但如果用户没有此物品,就会出错

追答

问题我看的很仔细。你单独运行这sql语句。即使没有12345.只是更新影响的数量为0而已。

绝对不可能报错。你这问题我已经有思路。但是需求还不是很明确。因为我找不到出问题的地方。

参考技术B 报什么错误?可以贴出来?
:count
:username都是参数?追问

是参数,:count是手动输入的参数,:username是手动输入的用户名

追答

那到底报什么错误?

mysql批量更新,数据存在则更新,不存在则插入

SQL语句怎么写:判断工号user_no,如果存在这个工号,则更新这个工号的信息,如姓名username,性别sex等字段信息,如果没有这个工号,则插入这个工号的所有信息,如姓名username,性别sex等字段信息..这个sql语句要怎么写~

首先,要为工号字段user_no建立唯一索引。

SQL语句使用REPLACE代替INSERT即可,例如:
REPLACE INTO 表名 (user_no, username, sex) values (123, \'xyz\', \'女\');

上面语句执行时候会字段判断123的user_no是否存在,存在就替换其名字和性别,否则就插入整行。
参考技术A 写一个脚本完成,
1、先创立一个临时表
2、将需要批量更新的数据导入到临时表中
3、然后两张表联合起来判断插入还是更新。

以上是关于mysql中先判断数据是不是存在,如存在则增加数量,不存在则增加一条记录的主要内容,如果未能解决你的问题,请参考以下文章

mysql插入数据时,判断是不是存在,存在则替代,不存在则直接插入,需要能够批量处理。

如何用php判断mysql数据库里某张表是不是存在

oracle创建表之前判断表是不是存在,如果存在则删除已有表

mysql在增加列前进行判断该列是否存在

mysql 数据库插入之前判断数据是不是存在

sql:判断是不是存在相同记录,如果存在则改写,不存在则添加