mysql存在就更新,不存在就新增

INSERT INTO newest_log_operation(
    ACTION, OPERATION, KEY_VALUE, BUS_KEY, CONTENT, USER_ID, VERSION, MODULE,CREATE_TIME)
   VALUES (:action, :operation, :keyValue, :busKey, :content, :userId, 1, :module,now())
   ON DUPLICATE KEY UPDATE
    ACTION = VALUES(ACTION),OPERATION = VALUES(OPERATION),BUS_KEY = VALUES(BUS_KEY),CONTENT = VALUES(CONTENT),
    USER_ID = VALUES(USER_ID),VERSION = VERSION + 1,CREATE_TIME = VALUES(CREATE_TIME);

1.ON DUPLICATE KEY UPDATE:表示唯一键重复或者主键重复

2.VALUES (:action, :operation, :keyValue, :busKey, :content, :userId, 1, :module,now()):假如不存在值,则新增记录,并且赋值

3.ACTION = VALUES(ACTION),OPERATION = VALUES(OPERATION),BUS_KEY = VALUES(BUS_KEY),CONTENT = VALUES(CONTENT),
    USER_ID = VALUES(USER_ID),VERSION = VERSION + 1,CREATE_TIME = VALUES(CREATE_TIME):表示假如唯一健或者主键已经存在,则更新部分字段.

时间: 2024-08-07 08:40:39

mysql存在就更新,不存在就新增的相关文章

MYSQL 多表更新 UPDATE SET like concat('%',abc,'%');

SQL语句为:select * from table1 where `text` like CONCAT('%',(select name from table2 where id =3),'%'); UPDATE ecs_region a,nation b SET a.code = b.code where b.province like concat('%',a.region_name,'%'); UPDATE ecs_region a,nation b SET a.code = b.cod

Mysql跨表更新 多表update sql语句总结

Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%. 在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式: UPDATE product p, productPri

mysql在线升级更新步骤

mysql在线升级更新步骤 MySQL 问题: mysql使用软件包安装,如何实现在线更新,而不需要拷贝数据库 解决: 使用mysql的in-place upgrade进行更新,本次更新为5.6.40版本,原数据库文件在/alidata/server下面 方法: 首先最好先备份一下数据库,防止更新失败可以还原(当然更新成功就不需要了) mysqldump -u root -p --add-drop-table --all-databases --force > data-for-upgrade.

5 详解MySQL数据库之更新语句

用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的 SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之 意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE.在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句. 一.INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据.这两条语句的语法类似.它们的主要区别是如何处理重复的数据

mysql大表更新sql的优化策略(转)

看了该文章之后,很受启发,mysql在update时,一般也是先select,而此时,如果没有使用索引,那会锁住整个表.使用索引的最佳 方式是使用主键,如果我们知道主键的范围(只要是精确范围的超集就可以了),那可以在查询条件中加上主键的范围,这样查询时,会 使用主键索引,就可以提高查询的速度了.这样,我们不用单独再给其它字段加索引,使用已知的索引就可以加速查询,这种方式感觉很屌. 原文:http://blog.csdn.net/bruce128/article/details/17426671

mysql存在则更新,不存在则插入

INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令可以处理重复键值问题,在实际上它之间有什么区别呢? 前提条件是这个表必须有一个 唯一索引或主键. unique 1.REPLACE发现重复的先删除再插入,如果记录有多个字段,在插入的时候如果有的字段没有赋值,那么新插入的记录这些字段为空. 2.INSERT发现重复的是更新操作.在原有记录基础上,更新指定字段内容,其它字段内容保留. 这样REPLACE的操作成本要大于 insert  ON

MySQL datetime的更新,删除网上的一些老概念

网上的老概念 第一点:是以前的MySQL的datetime的最小值是:'1000-01-01 00:00:00'(貌似),但是最新的MySQL测试datetime的最小值可以是:'0000-00-00 00:00:00'(0000-00-01 00:00:00也可以插入), 但是我是用'0001-01-01 00:00:00'作为最小值(一般用于代替null值作为该列的默认值),因为C#的DateTime最小值就是该值. 第二点:以前只能timestamp类型才能设置默认值为CURRENT_TI

Mysql 常用汇总 更新中

mysql 密码重置  先停止mysqld # mysqld_safe --skip-grant-tables & # use mysql; # update user set password=password('yes') where user="root";    ---将root密码设置为yes # flush privileges; # exit # ps -ef | grep mysql    //如果发现安全模式还没有关掉需要 kill -9  干掉 # serv

mysql插入、更新与删除

数据库增删改查都是要熟练掌握的. 这部分就来看看前面3个比较简单的部分,增,删,改. 插入数据 为表的所有字段插入数据 insert into table_name (column_list) values (value_list); 注意: 要指定插入表的表名: column_list指定的是要插入数据的那些列: value_list指定了对应插入的数据: 字段列和数据值的数量必须要相同: 要么全部指定字段名,要么全不指定: 插入的列名顺序可以和创建表时的顺序不一样,只要插入数据的值和列字段对