-
2020-09-20 09:54:14
与insert不同,当记录已存在(主键或唯一索引判断),replace可先删后插入,类似update效果,例如:
use bac; replace into lear_kafka(id, recvtype, brokerlist, topic, user, password) values(1, 2, '192.168.99.109:9092', 'test11', 'kakfa11', '112aA')
更多相关内容 -
MySQL插入或替换
2021-01-19 21:34:25我想创建一个系统来跟踪...MySQL插入或替换播放器的所有属性都以json格式存储,然后由PHP或JS进行解析。一旦玩家加入一个组,就会设置比较= 0的条目。比较= 1的条目应该在玩家第一次点击时创建更新统计信息并且从...我想创建一个系统来跟踪游戏中玩家的进度。每个玩家可以是多个组的成员,这些组都有其他要求。为了追踪他的进步,一旦他加入队伍,球员的统计数据将被保存。每次他重新加载他的统计数据时,现在的数据都应该保存在数据库中。MySQL插入或替换
播放器的所有属性都以json格式存储,然后由PHP或JS进行解析。一旦玩家加入一个组,就会设置比较= 0的条目。比较= 1的条目应该在玩家第一次点击时创建更新统计信息并且从此只应更新,而不是新创建。
现在我的问题是:如何做到这一点?当通过INSERT INTO的语法阅读我有以下几点:
INSERT INTO `groups` (`grp`, `id`, `json`, `compare`) VALUES
($grp, $id, $json, 1) ON DUPLICATE KEY SET `json` = $json
然而,由于没有按键,我不知道我是否能建立两/三键(因为可能有多个每个用户的组,以及同一组中的compare = 0条目),我不认为我可以这样做。
+------+----+---------+---------+
| grp | id | json | compare |
+------+----+---------+---------+
| 1 | 1 | stats | 0 |
| 1 | 1 | stats | 1 |
| 1 | 2 | stats | 0 |
| 1 | 2 | stats | 1 |
| 2 | 2 | stats | 0 |
| 2 | 3 | stats | 0 |
| 2 | 3 | stats | 1 |
| 2 | 4 | stats | 0 |
| 2 | 5 | stats | 0 |
+------+----+---------+---------+
grp是该组的球员。有设置为 数组的玩家可以在。
id是玩家的ID没有真正的限制。
json包含json 格式(点数等)的玩家统计数据。
compare是一个布尔值。 0代表入场数据(他注册时球员已经拥有的积分数量),1代表当前数据 - 将 与入场数据进行比较,以获得差异(=积分 玩家自加入集团以来)。
我希望我的解释是可以理解的,有人可以帮助我。
2013-11-23
Padarom
+0
是什么原因,你不只是有两列:initialstats和currentstats? –
+0
如果它不是该表的真实ID,则不会调用列标识。将其称为user_id/player_id –
+0
@RiccardoGalli我的数据库中的列命名有所不同,为了易于理解,我重新命名了它们。 –
-
mysql 替换字段部分内容及mysql 替换函数replace()
2021-01-19 21:46:14[mysql]replace的用法(替换某字段部分内容) [mysql]replace的用法 1.replace into replace into table (id,name) values(‘1′,’aa’),(‘2′,’bb’) 此语句的作用是向表table中插入两条记录。如果主键id为... -
mysql中使用replace替换某字段的部分内容
2020-09-10 11:55:44主要介绍了mysql中使用replace替换某字段的部分内容的方法,需要的朋友可以参考下 -
MySQL中实现插入或更新操作(类似Oracle的merge语句)
2020-09-10 00:15:08主要介绍了在MySQL中实现插入或更新操作(类似Oracle的merge语句)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 -
Mysql 之 插入数据(insert into 、 replace into 解析)
2021-05-07 09:17:34replace into:表示插入并替换数据,若表中有primary key或者unique索引,在插入数据的时候,若遇到重复的数据,则用新数据替换,如果没有数据效果则和insert into一样; insert ignore into:插入并忽略数据,如果...Mysql 插入数据
1、插入数据方法
mysql中常用的三种插入数据的语句:
- insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错;
- replace into:表示插入并替换数据,若表中有primary key或者unique索引,在插入数据的时候,若遇到重复的数据,则用新数据替换,如果没有数据效果则和insert into一样;
- insert ignore into:插入并忽略数据,如果中已经存在相同的记录,则忽略当前新数据。这样不用校验是否存在了,有则忽略,无则添加
2、语法介绍
2.1 insert into
每个字段与其值是严格一一对应的。也就是说:每个值、值的顺序、值的类型必须与对应的字段相匹配。但是,各字段也无须与其在表中定义的顺序一致,它们只要与 VALUES中值的顺序一致即可。
语法如下:
# 表中有些字段有默认值,则可以直接根据字段插入数据 INSERT INTO 表名(字段名1,字段名2,...) VALUES (值 1,值 2,...); # 按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致 INSERT INTO 表名 VALUES (值 1,值 2,...);
2.2 insert ignore into
这种方式的语法跟insert into 是一样的,只不过在遇到重复的数据时做出的处理不一致,有重复的就忽略该条数据的插入
语法如下:
# 表中有些字段有默认值,则可以直接根据字段插入数据 INSERT IGNORE INTO 表名(字段名1,字段名2,...) VALUES (值 1,值 2,...); # 按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致 INSERT IGNORE INTO 表名 VALUES (值 1,值 2,...);
题外:
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,对于插入数据时候遇到重复的primary key 时候,可以进行数据的更新,就避免了insert ignore into遇到重复的数据直接忽略的不足。但是一定要保证使用的时候是想要更新重复数据哦,不然就尴尬啦~~
INSERT … ON DUPLICATE KEY UPDATE
2.3 replace into
3、使用示例
初始表准备:
创建一个study 表, id 是自增主键
CREATE TABLE study( ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT , NAME VARCHAR(20) NOT NULL, AGE INT(10) );
首先插入一些为方便测试的数据:
INSERT INTO study VALUES(1 , 'a' , 10); INSERT INTO study VALUES(2 , 'b' , 11); INSERT INTO study VALUES(3 , 'c' , 12); INSERT INTO study VALUES(4 , 'd' , 13); INSERT INTO study VALUES(5 , 'e' , 14); INSERT INTO study VALUES(6 , 'f' , 15);
此时查询:
select * from study
开始测试:
(一)测试insert into
例如,现在再插入id 为 1 的数据与id为7的数据
INSERT INTO study VALUES(1 , 'a' , 11); INSERT INTO study VALUES(7 , 'g' , 16);
结果:
INSERT INTO study VALUES(1 , 'a' , 11); /* SQL错误(1062):Duplicate entry '1' for key 'PRIMARY' */ /* 受影响记录行数: 0 已找到记录行: 0 警告: 0 持续时间 0 的 2 条查询: 0.000 秒. */
报错。此时表中的数据:id 为 7的数据是没有插入成功的
(二)测试insert ignore into
例如,做同样的事情,现在再插入id 为 1 的数据与id为7的数据
INSERT INTO study VALUES(1 , 'a' , 11); INSERT INTO study VALUES(7 , 'g' , 16);
结果:
INSERT IGNORE INTO study VALUES(1 , 'a' , 11); INSERT IGNORE INTO study VALUES(7 , 'g' , 16); /* 受影响记录行数: 1 已找到记录行: 0 警告: 1 持续时间 3 条查询: 0.062 秒. */ SHOW WARNINGS LIMIT 5;
插入成功。此时表中的数据:id 为 7的数据是插入成功,而id为1的数据也并没有更新
(三)测试 INSERT … ON DUPLICATE KEY UPDATE
例如,做同样的事情,现在再插入id 为 1 的数据与id为8的数据
INSERT INTO study VALUES(1 , 'a' , 11) ON DUPLICATE KEY UPDATE age = 12; INSERT INTO study VALUES(8 , 'h' , 16) ON DUPLICATE KEY UPDATE age = 13;
结果:
INSERT INTO study VALUES(1 , 'a' , 11) ON DUPLICATE KEY UPDATE age = 12; INSERT INTO study VALUES(8 , 'h' , 16) ON DUPLICATE KEY UPDATE age = 13; /* 受影响记录行数: 3 已找到记录行: 0 警告: 0 持续时间 2 条查询: 0.015 秒. */
插入成功。此时表中的数据:id 为 1 的 因为存在所以数据被更新了,而id为8 之前并没有,所以其数据也并没有更新
(四)测试 replace into
经过上面的操作,目前的表数据由上图所示。
例如,做同样的事情,现在再插入id 为 1 的数据与id为9的数据。
REPLACE INTO study VALUES(1 , 'a' , 11); REPLACE INTO study VALUES(9 , 'i' , 18);
结果:
REPLACE INTO study VALUES(1 , 'a' , 11); REPLACE INTO study VALUES(9 , 'i' , 18); /* 受影响记录行数: 3 已找到记录行: 0 警告: 0 持续时间 3 条查询: 0.000 秒. */
插入成功。此时表中的数据:id 为 1 的 因为存在所以数据被更新为了11,而id为9 之前并没有,所以其数据也并没有更新
注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
-
mysql插入数据时如果有相同数据就不插入或者替换
2018-04-19 13:42:05方法1 : insert ignore into 此方法只适用于判断数据库有无相同数据 有就不进行操作,没有就插入 我们知道如果插入数据时如果主键相同 或者有唯一索引之类的列数据相同 如果使用 insert into 插入会报错。...方法1 : insert ignore into 此方法只适用于判断数据库有无相同数据 有就不进行操作,没有就插入
我们知道如果插入数据时如果主键相同 或者有唯一索引之类的列数据相同 如果使用 insert into 插入会报错。
使用 insert ignore into 如果遇到错误会忽略这个错误 ,然后返回 并没有对数据库进行操作,换句话说就是数据还是原来的数据
没有错误就和insert into 一样
方法2 :MYSQL插入更新 insert into table_name (a,b) values('q','b') ON DUPLICATE KEY UPDATE a='q' 此方法适用于插入数据库判断有无主键重复或者有唯一索引列的重复, 有就更新ON DUPLICATE KEY UPDATE后面的字段, 没有就插入这条数据
例子 : insert into table_name (id,a,b) values(1,'q','b') ON DUPLICATE KEY UPDATE a='q'
id 为主键 如果存在id为1 的数据 就更新这条数据 a列为q 没有就插入这条数据
-
MySQL 处理插入过程中的主键唯一键重复值的解决方法
2020-12-15 14:56:09本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下来就分别看看这三种方式的处理办法。 IGNORE 使用ignore当插入的值遇到主键... -
分享MYSQL插入数据时忽略重复数据的方法
2021-01-19 22:27:531:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) 代码如下: REPLACE INTO Syntax REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr | ... -
Mysql 替换函数replace()实现mysql替换指定字段中的字符串
2021-03-03 20:22:24这篇文章主要介绍了mysql 替换字段部分内容及mysql 替换函数replace()的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧[mysql]replace的用法(替换某字段部分内容)[mysql]replace... -
mysql插入语句的方法
2021-01-28 00:33:53mysql插入语句的方法:mysql中常用的三种插入数据的语句:insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,... -
MySQL插入重复数据
2021-01-18 22:49:48MySQL中批量insert into时防止更新插入重复数据去重的方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法方案一:使用ignore关键字如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免... -
MySQL查询替换列值
2021-02-10 06:28:46让我们首先创建一个表-mysql>createtableDemoTable(StudentIdintNOTNULLAUTO_INCREMENTPRIMARYKEY...使用插入命令在表中插入一些记录-mysql>insertintoDemoTable(Score)values(56);mysql>insertintoDemoTab... -
MySQL插入数据的三种方法
2021-07-26 16:49:00Mysql 插入数据 1、mysql中常用的三种插入数据的方法 insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错。 replace into:替换数据。插入时,如果表中已经存在相同的... -
mysql 从一个表中查数据并插入另一个表实现方法
2021-01-19 22:54:56mysql 从一个表中查数据并插入另一个表实现方法 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。 本文就将以... -
mysql插入数据字符错误
2021-03-03 20:51:19Incorrect string value: '\xF0\x9F...' for ...Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。我的解决方案是这样的[mysqld]character-set-server=utf8mb4[mysql]defa... -
MySQL替换(更新)写入 replace into
2021-01-18 18:10:08MySQL中实现replace into操作方式:思路:通过判断插入的记录里是否存在主键索引或唯一索引冲突,来决定是插入还是更新。当出现主键索引或唯一索引冲突时则进行update操作,否则进行insert操作。实现:使用 replace ... -
Mysql插入数据前查重
2021-01-27 05:03:55常见插入数据的SQLinsert into 插入数据库时会检查主键是否存在,存在会报错replace into 替换数据库记录,需要表中有主键或者unique索引,如果数据库已存在的数据,会先删除该数据然后新增。不存在的数据效果和... -
MYSQL插入数据时忽略重复数据_MySQL
2021-02-04 10:49:45bitsCN.comMYSQL插入数据时忽略重复数据当程序中insert时,已存在的数据不插入,不存在的数据insert。在网上搜了下,可以使用...1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) REPLACE I... -
Mysql 数据库插入
2022-03-02 10:44:37# replace into表示插入替换数据,需求表中有PrimaryKey, # 或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; # insert ignore表示,如果中已经存在相同的记录,... -
mysql插入数据失败原因分析
2021-01-19 03:31:19//将引号替换成程序员人生 2、执行SQL语句插入数据 INSERT INTO `wlsh_xh` (`title`, `content) VALUES ('{$title}', '{$content}') 3、把“程序员人生”汉字替换成引号 UPDATE wlsh_xh SET content = REPLACE... -
MySQL插入默认字段值方法大全
2021-02-06 19:08:41如果该字段为NOT NULL类型,那么直接将NULL插入到该字段的话,MySQL普通模式下该字段的值会变成默认值并发出警告,但是strict模式下会直接报错。从性能的角度考虑,一般来说字段会设置为NOT NULL。这样在strict... -
Mysql插入数据:不存在则插入,存在则跳过或更新
2021-01-26 06:24:02一般情况下我们会写两条sql去操作select 查询当前插入的数据是否已经存在如果不存在就插入新的记录,如果存在就提示用户该记录已经存在在mysql里面可以这么操作,如果记录存在就跳过或者更新,不存在就插入!... -
MySQL去重插入方法
2021-02-04 14:29:37重复则替换(更新) 准备表: CREATE TABLE `user_info` ( `id` int(11) NOT NULL COMMENT 'id', `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名', `idcard` ... -
mysql插入数据,数据已经存在则忽略
2021-08-12 20:02:44# replace into表示插入替换数据,需求表中有PrimaryKey, # 或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; # insert ignore表示,如果中已经存在相同的记录,则... -
mysql插入前判断数据是否存在的操作
2021-02-02 10:23:20mysql插入前判断数据是否存在的操作,数据,不存在,行数,索引,发生冲突mysql插入前判断数据是否存在的操作易采站长站,站长之家为您整理了mysql插入前判断数据是否存在的操作的相关内容。业务场景:需要记入访客的访问... -
Mysql去重插入方法
2021-03-29 16:33:38文章目录Mysql去重插入方法1. 重复不插入方法2. 重复替换方法 Mysql去重插入方法 例如有如下表结构: CREATE TABLE `user_info` ( `id` int(11) NOT NULL COMMENT 'id', `username` varchar(50) CHARACTER SET utf...