MySQL replace into (insert into 的增强版)

在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错:

   Error Code: 1062. Duplicate entry ‘XXXXX‘ for key ‘PRIMARY‘(主键冲突)

  这样我们只好检查主键是不是存在,若存在则更新,若不存在则插入。或者写SQL流程控制语句(if...else...)

Mysql提供了replace into跟insert into的功能一样。不同点在于:

  如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。否则,直接插入新数据。

  注意:因为要根据主键或者是唯一索引判断是否有重复数据,所以操作的表必须要有主键或者是唯一索引。否则的话,replace into 会直接插入数据。

Mysql replace into用法有三种,最简单的一种用法就是直接将 "insert" 关键字替换为"replace"就可以啦。

  insert into t(... , ...) values(... , ...)

   修改为

  replace into t(... , ...) values(... , ...)

时间: 2024-10-18 07:25:23

MySQL replace into (insert into 的增强版)的相关文章

MySQL replace into 用法(insert into 的增强版)

MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time

MySQL replace into 用法详细介绍

MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time

MySQL replace into 说明(insert into 增强版)

MySQL replace into 说明(insert into 增强版) 在插入数据到一个表时,通常是这种情况:1. 先推断数据是否存在: 2. 假设不存在,则插入:3.假设存在,则更新. 在 SQL Server 中能够这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = ge

将表里的数据批量生成INSERT语句的存储过程 继续增强版

文章继续 桦仔兄的文章 将表里的数据批量生成INSERT语句的存储过程 增强版 继续增强... 本来打算将该内容回复于桦仔兄的文章的下面的,但是不知为何博客园就是不让提交!.... 所以在这里贴出来吧,算作继续增加文章中解决的:根据查询条件自动生成插入脚本的需求,其实这种需求还是蛮常见的. 本文着重解决了文中的脚本的schema问题,给调整了下,现在脚本能自动识别出不同的schema下同名的表的语句 修改后脚本如下: -- Author: <桦仔> -- Blog: <http://ww

将表里的数据批量生成INSERT语句的存储过程 增强版

原文:将表里的数据批量生成INSERT语句的存储过程 增强版 将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件来生成INSERT语句的,只有借助第三方工具(third party tools) 这种脚本网上也有很多,但是网上的脚本还是欠缺一些规范和功能,例如:我只想导出特定查询条件的数据,网上的脚本都是导出全表数据 如果表很大,对性能会有很大影响

MySQL中的insert ignore into, replace into等的一些用法小结(转)

MySQL中的insert ignore into, replace into等的一些用法总结(转) 在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(200) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `NewIndex1` (`name`) ) ENGI

代理模式增强版

package cn.hncu.pool; import java.io.IOException;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Array;import java.sql.Blob;import java.sql.CallableStatement;import java.sql.Cl

细说mysql replace into

replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句.直接上实例吧: 新建一个test表,三个字段,id,title,uid,  id是自增的主键,uid是唯一索引: CREATE TABLE `test` ( `Id` int(11) NO

MySQL replace函数替换字符串语句的用法(mysql字符串替换)

MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用到mysql的MySQL replace函数,这里简单介绍一下. 比如你要将表 tb1里面的 f1字段的abc替换为def UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 str 中所有出现