当记录不存在时插入,即insert if not exists。mysql中,插入(insert)一条记录很简单。

但在一些特殊应用中,插入记录前,需要检查这条记录是否已存在,只有当记录不存在时才执行插入操作。

本文将与大家一起探讨这个问题。

问题:创建一个表来存放客户信息,可以用 insert 语句插入信息到表中,但是如何才能保证不会插入重复的记录呢?

答案:使用 EXISTS 条件句防止插入重复记录。

例1:插入多条记录

假设有一个主键为 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.client_id = suppliers.supplier_id);

例2:插入单条记录

复制代码 代码如下:

INSERT INTO clients

(client_id, client_name, client_type)

SELECT 10345, 'IBM', 'advertising'

FROM dual

WHERE not exists (select * from clients

where clients.client_id = 10345);

注解:使用 dual 作表名,可以让你在 select 语句后面直接跟上要插入字段的值,即使这些值还不存在当前表中。

mysql insert if exists_mysql数据库中的insert if not exists相关推荐

  1. mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )

    原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...

  2. mybatis insert 重复数据2条_Mybatis框架lt;增gt;:添加一条数据到数据库中,insert...

    在以上框架中,前面所搭建好的框架全部固定好,接下来,我们在此基础上实现功能使用insert添加一条数据到数据库中(1)在UserMapper接口中添加对应方法,//在数据库表中增添一条数据,返回为in ...

  3. C++ 开发中如何利用sql语句(insert语句)向数据库中插入变量

    **问题描述:**在C/S开发过程中,当客户端向服务端发送接口(结构体)信息时,服务端需要将接收到的信息存入数据库,但是,常规insert语句只能存确定的值到数据,当客户端传入的值不确定,且为了保证代 ...

  4. mysql md5 sha1_SQL Server 数据库中的 MD5 和 SHA1

    MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...

  5. ibatis insert mysql_让iBatis中的insert返回主键

    让iBatis中的insert返回主键 [ibatis insert 返回 自增主键] parameterClass="RemarkInfo"> insert into SG ...

  6. oracle mysql 同义词,有关Oracle数据库中同义词的简单介绍

    Oracle数据库中有关同义词的一些知识是我们本文主要要介绍的内容,首先我们先看一个语句,如下: create synonym table_name for user.table_name; 其中** ...

  7. oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别

    order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...

  8. mysql支持非关系_说下oracle、mysql、非关系型数据库中的索引结构?

    谢邀~~树懒君悉心整理了一篇索引结构方面的内容,跟各位知友分享分享~ Oracle 索引的数据结构:B-TreeOracle 数据库使用 B-trees 存储索引,来加速数据访问.若没有索引,你必须顺 ...

  9. mysql id in set_mysql数据库中find_in_set()和in()用法区别

    mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...

最新文章

  1. 01-复杂度3 二分查找
  2. 两条链路实现负载均衡和容错的设计
  3. 2-结构体的最后一个成员的定义-C语言中的柔性数组-
  4. 将每个字典一行一行的添加到pd.DataFrame中
  5. 随机地址生成器_随机连接神经网络性能超过人工设计!何恺明等人发布新研究...
  6. 自己的总结(你必须知道的C 495个问题)
  7. 以太坊私有链 使用dev模式
  8. jquery右下角自动弹出关闭层
  9. 工科计算机考研311分今年能上吗,2020年考研,工科345分,能进大连理工吗?学姐:热门专业悬...
  10. Eclipse下Maven工程多模块继承和聚合的创建
  11. 122. 买卖股票的最jia时机||(JavaScript)
  12. 【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
  13. ArcCatalog导出数据库中shapefile
  14. AUTOCAD——合并图层
  15. PCIe总线的参考时钟与同步时钟的差异
  16. 车联网大规模商用关键突破口深度调研,车路协同智慧高速全国建设情况
  17. jquery与ajax实现增删改查
  18. 基于Gin+Vue+ElementUI实现的微信公众号平台系统
  19. 成功解决Myeclipse2017破解时遇到的crack.bat文件闪退问题
  20. 2022年下半年软件评测师考试真题一些回忆

热门文章

  1. FATAL : No Bootable medium found! System halted
  2. c语言冷门小知识,这些C/C++冷门知识点你知道多少呢?来看一下
  3. SP页面如何显示本地图片
  4. iOS 开发源码的地址
  5. 计算机资源管理 教学策略,什么是教学策略?
  6. 零跑股价受港股汽车概念股的大涨利好,零跑股价又有了信心
  7. Fluke MicroScanner2 电缆验测仪 (MS2-100)功能和配置清单
  8. 旭锋科技制造信息管理系统--客户端主页面
  9. 免费课程《微信公众号开发》开讲啦!!!
  10. 轮播图动态生成小圆点