问题产生
博主相信很多人在开发的时候难免会出现需要先判断某个记录是否存在,存在则更新,不存在则插入新记录的情况(如在填写报名表的时候有用户需要修改信息等)。通常的做法是先使用 DELETE 语句先删除一下再使用 INSERT INTO 语句插入,这样做显然效率会比较低。

解决办法
MySQL 为我们提供了一个新的途径可以方便地实现仅执行一条 SQL 语句达成这个操,那就是 REPLACE INTO 语句。

使用方法
语句格式:

REPLACE INTO 表名(列名1, 列名2, ..., 列名n) VALUES (值1, 值2, ..., 值n);

例如:

REPLACE INTO students (StuName, Stuid, Class) VALUES ('张三', '123456789', '1234567');

语句原理
REPLACE INTO 语句要求被插入的表需要有已经定义的主键,该语句通过对主键进行检索判断记录是否存在,若记录存在,则对非主键属性进行更新操作;若记录不存在,则插入一条新记录。
2019.1.7 更新:此处的更新操作指的是按新的数据覆盖该主键标识的记录,而不是针对某些列进行更新

受影响的行数
当相同主键记录存在,且欲更新的数据与已存在的数据完全相同时(即此时什么都不做),受影响的行数为 1。
当相同主键记录存在,且欲更新的数据与已存在的数据不完全相同时(即此时会更新数据),受影响的行数为 2。
当相同主键记录不存在时,将插入一条新的记录,受影响的行数为 1。

mysql数据库 一条语句实现记录存在则更新,不存在则插入相关推荐

  1. mysql语句统计总数_SQL一条语句统计记录总数及各状态数

    SQL一条语句统计记录总数及各状态数 方法一. 代码如下: SELECT SUM(正确数)+SUM(错误数) AS 总记录数,SUM(正确数),SUM(错误数) FROM ( SELECT COUNT ...

  2. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

  3. 为什么只能sudo进mysql_解决项目中MySQL数据库执行删除语句时间太长的问题

    问题描述: 由于业务需求,需要删除一些重复数据.即删除openid对应的2条数据,最终只保留一行. MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的! 先来错误的演示: 1.先把错误 ...

  4. 1.MySQL数据库 2.SQL语句

    01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...

  5. MySQL数据库的SQL语句

    MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...

  6. mysql delete语句非常耗时_解决项目中MySQL数据库执行删除语句时间太长的问题

    问题描述: 由于业务需求,需要删除一些重复数据.即删除openid对应的2条数据,最终只保留一行. MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的! 先来错误的演示: 1.先把错误 ...

  7. 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...

    <Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法>要点: 本文介绍了Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法,希望对您有用.如果有 ...

  8. Linux MySQL数据库冷迁移采坑记录

    Linux MySQL数据库冷迁移采坑记录 当前文件系统已满,需要将MySQL默认路径迁移到新文件系统下. MySQL数据库文件原位置:/var/lib/mysql . 要移动至:/mysql/mys ...

  9. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

最新文章

  1. 云服务器镜像麻烦吗_云服务器的镜像功能有什么作用?
  2. 原生js cookie本地存储
  3. ubuntu更新时区和时间
  4. WebStorm10.0.4 Live Edit与Google浏览器实时无刷新自动加载页面
  5. 新疆自考大专计算机应用专业,新疆大学2017年新疆自考计算机信息管理(专科)考试计划...
  6. 如何制作出让女朋友满意的大片
  7. LOJ:黑暗城堡(最短路)
  8. win10 解决升级 WordPress 时提示”另一更新正在进行”
  9. Coursera自动驾驶课程第6讲:Vehicle Longitudinal Control
  10. 团队项目讨论及计划修订版
  11. 免费解决vcruntime140.dll文件缺失 - 资源篇
  12. C和指针 (pointers on C)——第十章:结构体和联合(上)
  13. postman|接口测试 | pre-request script 场景应用
  14. 同事是竞合关系不是零和关系
  15. SpringBoot06-Dubbo和Zookper集成
  16. 抖音根据关键词获取视频列表接口调用展示
  17. 随笔记:实现HTML页面局部滚动及自定义滚动条样式
  18. C#彩色艺术化二维码样式设计(仅说思路)
  19. 手机怎么改android版本号,安卓手机build.prop每行的意思,如果想改版本信息型号等...
  20. CTF解题基本思路步骤(misc和web)

热门文章

  1. Kubernetes — 安装 Dashboard UI
  2. CI/CD — Overview
  3. Openstack 实现技术分解 (1) 开发环境 — Devstack 部署案例详解
  4. PowershellTFS_Part 1
  5. stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用
  6. 电流环差分信号传送数字信号
  7. Filter的生命周期
  8. 数据库-ADONET-使用强类型DataSet
  9. Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层
  10. Winfrom devexpress 通用权限框架