当记录不存在时插入,即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. 《评人工智能如何走向新阶段》后记(再续21)
  2. transforms.compose()
  3. 使用fpm简单制作自定义rpm包
  4. XML序列化和反序列化(C#)
  5. myeclipse 删除历史工作空间记录
  6. 机器学习能诊断病情,还能预测患者出院后的情况?
  7. ios实践之tableView顶部“弹簧”图片
  8. IPsec ***数据传输过程
  9. java 多线程压测_java多线程Jmeter压测实现
  10. 20201219:力扣219周周赛题解
  11. Pytorch——可视化不同的优化器效果
  12. linux下实现getch()函数的功能,Linux下实现getch()函数功能
  13. OpenCV基础——IplImage中的widthStep
  14. kettle 使用教程(入门)
  15. 京东登录页面html代码_利用Python爬取京东商品的一种办法
  16. 【ESP 保姆级教程】疯狂点灯篇 —— 案例:ESP8266 + LED + 按键 + 阿里云生活物联网平台 + 公有版App + 天猫精灵(项目:我之家)
  17. CSC联合培养加拿大工签攻略
  18. DeR-ViT(CVPR2022)
  19. 利用Dreamweaver模板批量制作网页
  20. js去除数组中的空值,假值

热门文章

  1. 本地缓存与分布式缓存的优缺点、适用场景与实现分析
  2. 编写一个程序,用户使用for循环输入5个数字,所有这些数字将存储在一个数组中。之后,程序将添加这五个数字并显示结果。程序必须支持运算符重载的概念。
  3. PHP工程师面试常见问题
  4. 微信支付宝支付代理 微信扫码支付收银系统
  5. 选择教育直播平台时,要注重这三点
  6. 你所不知道的大数据:一条微博得到王思聪手机号
  7. Pix4Dmapper无人机航测之3D数据处理工作站硬件配置方案
  8. 混凝土与水泥制品行业发展展望
  9. 黑苹果关机变重启_「技巧」手机黑屏死机咋整?重启是王道
  10. CSS实现鼠标悬停图片时的边框变色效果