mysql 插入更新在一条sql ON DUPLICATE KEY UPDATE

有时候需要进行数据操作的,如果有数据则更新数据, 没有数据则插入. 以往的做法是先查询,再根据查询结果进行判断,执行插入或更新操作

其实 有一种 ON DUPLICATE KEY UPDATE 语法, 可以在一条sql里完成上述逻辑操作.

INSERT INTO tbPrize(sOpenid,iAreaId,iPlatId,SSSgroupOne,SSSgroupTwo,SSgroupOne,SSgroupTwo,SgroupOne,SgroupTwo,dtFound) VALUES (‘2A4528699714BC8016DAED06E245163F‘,1038,1038,556175,556172,111,222,556144,556137,‘2018-03-20 11:28:30‘)
ON DUPLICATE KEY UPDATE sOpenid = ‘2A4528699714BC8016DAED06E245163F‘,SSgroupOne=777,SSgroupTwo=888

  1. 在正常的插入语句后面增加, ON DUPLICATE KEY UPDATE 字段名=值, 多个值逗号隔开
  2. 一定要有一个主键或者唯一的键 , 不择语句不生效

原文地址:https://www.cnblogs.com/jinshuo/p/8608498.html

时间: 2024-11-08 22:59:40

mysql 插入更新在一条sql ON DUPLICATE KEY UPDATE的相关文章

【转】MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

原文链接:http://www.jb51.net/article/47090.htm 今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on duplicate key update ...,我当时就想怎么不用Replace呢,于是回来就仔细查了下,它们果然还是有区别的 看下面的例子吧: 1 Replace into ... 1.1 录入原始数据 mysql> use test; Database changed mysql>  mysq

MySQL插入更新_ON DUPLICATE KEY UPDATE

前提:操作的表具有主键或唯一索引 INSERT INTO:表中不存在对应的记录,则插入:若存在对应的记录,则报错: INSERT INTO IGNORE:表中不存在对应的记录,则插入:若存在对应的记录,则忽略,不进行任何操作 REPLACE INTO:表中不存在对应的记录,则插入:若存在对应的记录,则删除原有的记录,再 插入新的记录. ON DUPLICATE KEY UPDATE(on duplicate key update)的功能类似于REPLACE INTO: 若表中不存在数据(没有待插

解决MySQL复合主键下ON DUPLICATE KEY UPDATE语句失效问题

先描述一下这个问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: +-------+----------+------+-----+---------------------+-------+ | Field | Type     | Null | Key | Default             | Extra | +-------+----------+------+-----+---------------------+-------

ON DUPLICATE KEY UPDATE添加或更新

首先主键是索引insert into ys_yssf_rj(customerId,settleDate,settleMoney,settleActual, settleBalance,settleAccountState)VALUES(#customerId#,now(),#settleMoney#,#settleActual#,#settleBalance#,#settleAccountState#)ON DUPLICATE KEY UPDATEsettleDate = now(),settl

mysql ON DUPLICATE KEY UPDATE重复插入时更新

mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM suppliers WHERE not exists(select * from clients where clients.c

mysql 插入/更新数据

mysql 插入/更新数据 INSERT 语句 1.一次性列出全部字段的值,例如: INSERT INTO student VALUES('Chenqi','M', 29); INSERT INTO student VALUES('Bush','M', 60),('Obama', 'M', 45); 允许同时插入多个数据行: 2.只对部分字段赋值 INSERT INTO student(name, sex) VALUES ('Abby', 'F'),('Joseph', 'M'); 没有在INS

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

应用场景: 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1. 比如: 下面两个语句会有相同的效果: INSERT INTO table (a,b,c) VALUES

mysql插入报错:java.sql.SQLException: Incorrect string value: '\xE6\x9D\xAD\xE5\xB7\x9E...' for column 'address' at row 1

界面报错: 日志报错: java.sql.SQLException: Incorrect string value: '\xE6\x9D\xAD\xE5\xB7\x9E...' for column 'address' at row 1 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.17.jar:8.0.17] at com.mys

on duplicate key mysql插入更新

insert into `test` (`job_id`, `user_name`, `total_time`) values ('12345', 'zhangsan', '10') on duplicate key update `job_id` ='12345',`user_name` = 'zhangsan', `total_time`= '14'; 会判断主键或唯一键,存在就更新,不存在就插入 原文地址:https://www.cnblogs.com/zhangxiaoj/p/11294