用MySQL如何实现“如果数据不存在则插入”


我这里有一个大概10万行数据的表,如果我重复添加相同内容和格式的数据,能否有方法能够确认出我插入的数据已经存在了,而不用其他多余的查询。
在Google上找到一篇 文章 是关于互斥表的。

mysql php

betlich 12 years, 2 months ago

给个笨点的方案,先把所有的记录导入一张临时表(不去重),新建一张表,使用
insert ingore into tb(col1,col2) select col1,col2 from tmp_tb
其中tb中的col1,col2为uk
以下是个简单的例子:

   
  新建临时表tmp_tb
  
CREATE TABLE `tmp_tb` (
`id` int(11) NOT NULL auto_increment,
`col1` int(10) NOT NULL,
`col2` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

导入记录(不排重),如图
原始记录

   
  新建正式表
  
CREATE TABLE `tb` (
`id` int(10) NOT NULL,
`times` int(10) NOT NULL,
PRIMARY KEY (`id`,`times`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
执行以下sql
insert ingore into tb(col1,col2) select col1,col2 from tmp_tb
结果如下,已经排除了重复记录

排重记录

百合吧G answered 12 years, 2 months ago

Your Answer