`
isiqi
  • 浏览: 16561400 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

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

    使用`NOT EXISTS`子查询,我们可以构造一个`INSERT`语句,只有当插入的记录在表中不存在时,才会执行插入操作。 **示例一:插入多条记录** 如果我们有一个`suppliers`表,想将所有供应商转换为客户,并且客户类型为...

    MySQL实现两张表数据的同步

    有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,需要将其中几个字段对应起来。可以用下面的触发器实现。 表A的触发器: ...

    mysql 存储过程判断重复的不插入数据

    -- 如果$existsFlag等于0,表示bookName不存在,插入新记录 insert into book(bookNumber, price) values($bookName, $price); end if; end$$ delimiter ; ``` 在这个存储过程中,首先定义了一个名为`proc_add_...

    mysql.zip_MYSQL_mysql vc_mysql-vc_vc mysql

    在上述代码中,`CREATE TABLE`语句定义了表结构,`IF NOT EXISTS`确保表只在不存在时创建,`id`字段被设为主键且自动增长,`name`字段则为字符串类型,限制长度为50。 创建完表后,可以继续插入数据、查询、更新或...

    PHP MySQL 创建数据库:创建表:插入数据.md

    3. **IF NOT EXISTS:** 使用该关键字可确保当表已存在时不会触发错误。 #### 三、PHP MySQL 插入数据 最后一步是向表中插入数据,这同样可通过SQL语句实现。 **3. 使用`mysqli`插入数据** ```php // 数据库...

    mySQL基础语法,介绍mysql的语法基础

    如果尝试创建已存在的数据库且未指定 `IF NOT EXISTS` 子句,系统将抛出错误。例如,创建名为 `test3` 的数据库的正确语法是: ```sql CREATE DATABASE test3; ``` 如果数据库已存在,再次运行该语句会导致错误 `...

    mysql临时表用法分析【查询结果可存在临时表中】

    INTO` 语句,但MySQL不支持直接将查询结果存入临时表,所以通常采用 `CREATE TABLE AS SELECT` 或 `INSERT INTO ... SELECT` 的方式: ```sql -- 创建临时表并填充数据 CREATE TABLE tmp_table_name AS SELECT ...

    auto insert_Table_database_MYSQL_

    在数据库管理中,当需要将大量数据插入同一个表时,使用循环可以避免手动编写多条INSERT语句,提高效率并减少错误。 MySQL是一个广泛使用的开源关系型数据库管理系统,支持多种数据类型、事务处理和存储引擎。在...

    MySQL思维导图详解版

    `IF NOT EXISTS`选项用于避免重复创建已存在的数据库。数据库名称不能使用MySQL的关键字,如果确实需要,可以用反引号(`)包裹。字符集定义了数据库存储字符的能力,如UTF8支持中文字符。设定字符集可以通过创建时...

    mysql单选题目111

    在创建数据库时,使用 IF NOT EXISTS 子句可以确保只有在数据库不存在的情况下才会创建。 ### 23. 逻辑运算符优先级 23. 下列哪一个逻辑运算符的优先级排列是正确的( )。 a) AND/NOT/OR b) NOT/AND/OR c) OR/NOT...

    Python的MySQL数据库操作

    cursor.execute('create database if not exists python') ``` 这里我们使用 `cursor` 对象来执行创建数据库的 SQL 语句。如果数据库不存在,则创建一个名为 `python` 的数据库。 选择数据库 在执行 SQL 语句之前...

    Mysql中replace与replace into的用法讲解

    这意味着,只有当新记录的键值在表中不存在时,才会执行插入操作;否则,将执行更新操作。 在使用`REPLACE`和`REPLACE INTO`时,你需要考虑到它们对数据的影响以及可能的性能影响。由于它们涉及到删除和插入,这...

    MySQL基础整理笔记

    `IF NOT EXISTS` 用于确保只有当数据库不存在时才创建它,避免重复创建。 - **示例**:`CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARACTER SET utf8;` **4. 查看数据库列表** - **命令**:`SHOW DATABASES...

    mysql.rar_MySQL Visual C++_MySql查询_c语言mysql_mysql c语言_mysql操作

    char *sql = "CREATE TABLE IF NOT EXISTS Employees (ID INT AUTO_INCREMENT PRIMARY KEY, Name CHAR(20), Position CHAR(20));"; if (mysql_query(conn, sql)) { fprintf(stderr, "%s\n", mysql_error(conn)); } ...

    Mysql SQL语句

    如果希望在数据库已存在时不抛出错误,则可以使用`IF NOT EXISTS`条件。 - 示例:`CREATE DATABASE IF NOT EXISTS mytest;` - **选择数据库**: 使用`USE`命令来选择一个数据库进行后续的操作。 - 示例:`USE ...

    Unity链接MySQl所用到的MySql.Data.dll插件

    string createTableSql = "CREATE TABLE IF NOT EXISTS Players (Id INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(50), Score INT)"; MySqlCommand createTableCommand = new MySqlCommand(createTableSql, ...

    C API连接mysql

    1、在MySql的官方网站下载mysql-connector-c-noinstall,并将解压后的bin和include文件夹拷贝到Mysql的安装目录 2、设置VC6环境,在vc工具-选项-目录,加入刚才的Include文件夹的路径,例如:C:\Program Files\MySQL...

Global site tag (gtag.js) - Google Analytics