MySQL 当记录不存在时插入(insert if not exists)

在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案。
问题:我创建了一个表来存放客户信息,我知道可以用 insert 语句插入信息到表中,但是怎么样才能保证不会插入重复的记录呢?
答案:可以通过使用 EXISTS 条件句防止插入重复记录。
示例一:插入多条记录
假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:
Code:

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);

示例一:插入单条记录
Code:

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 语句后面直接跟上要插入字段的值,即使这些值还不存在当前表中。

时间: 2024-08-07 08:24:05

MySQL 当记录不存在时插入(insert if not exists)的相关文章

MySQL 记录不存在时插入 记录存在则更新的实现方法

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; INSERT 中 ON DUPLICATE KEY UPDATE的使用  如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE.例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:mysql> INSERT INTO ta

mysql insert if not exists防止插入重复记录的方法(转)

MySQL 当记录不存在时插入(insert if not exists) 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 问题:我创建了一个表来存放客户信息,我知道可以用

【转】MySQL数据表中记录不存在则插入,存在则更新

mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 问题:我创建了一个表来存放客户信息,我知道可以用 insert 语句插入信息到表中,但是怎么样才能保证不会插入重复的记录呢? 答案:可以通过使用 EXISTS 条件句防止插入重复记录. 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的

mysql 操作记录

一些重要操作记录. 避免重复插入INSERT INTO lhlh_emotion (word, freq, tag) SELECT '{emotion}', 100, 'a' from DUAL where not exists(select word from lhlh_emotion where word='{emotion}'); 原文地址:https://www.cnblogs.com/bingwork/p/9183268.html

mysql ON DUPLICATE KEY UPDATE重复插入时更新

mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 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.c

MySQL插入数据时插入无效的列

1.错误描述 com.mysql.jdbc.exception:jdbc4.MySQLSyntaxErrorException:Unknown column 'man' in 'field list' 2.错误原因 数据库表中的字段:sno     sname    sage     ssex 插入数据时:          sno     sname    sage     man          本来是想插入ssex这个字段的值为"man",结果将man弄成了ssex字段名 3.

mysql 表记录操作

1.增加表记录 <1>插入一条记录: insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......); <2>插入多条记录: insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......), (value1,value2,.......), ... ; <3>set插入: insert [

MySQL如何记录binlog

--MySQL如何记录binlog   -------------------------------2014/07/08 binlog文件的内容 log event    MySQL的binlog文件中记录的是对数据库的各种修改操作,用来表示修改操作的数据结构是Log event.不同的修改操作对应的不同的log event.比较常用的几种log event有:Query event.Row event.Xid event等.其中Query event对应的是一条SQL语句,在DDL操作和ST

PHP获取MySql新增记录ID值的方法

今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法有 1.使用语句 mysql_query("select max(id) from user",$link); 2.使用函数msyql_insert_id(); (1)mysql版 int mysql_insert_id ([ resource $link_identifier = NUL