Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131206
  • 博文数量: 42
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 448
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-07 12:02
文章分类
文章存档

2010年(42)

我的朋友

分类: Mysql/postgreSQL

2010-08-04 14:11:51

MySQL 当记录不存在时插入(insert if not exists)
在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案。

在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案。

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

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

示例一:插入多条记录

假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:

  1. INSERT INTO clients  
  2. (client_id, client_name, client_type)  
  3. SELECT supplier_id, supplier_name, 'advertising'  
  4. FROM suppliers  
  5. WHERE not exists (select * from clients  
  6. where clients.client_id = suppliers.supplier_id);  

示例一:插入单条记录

  1. INSERT INTO clients  
  2. (client_id, client_name, client_type)  
  3. SELECT 10345, 'IBM''advertising'  
  4. FROM dual  
  5. WHERE not exists (select * from clients  
  6. where clients.client_id = 10345);  

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

标签:

阅读(827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~