检查多个重复记录

时间:2012-03-26 17:29:58

标签: php mysql duplicates

在将数据插入表之前,我需要检查重复记录并报告这些记录的列表。 如果至少有一个副本,则查询不应插入任何内容。

要插入的记录数:~1000

表中的行:~1.000.000

表:

CREATE TABLE `test` (
  `A` varchar(19) NOT NULL,
  `B` varchar(9) NOT NULL,
  KEY `A` (`A`),
  KEY `B` (`B`)
) ENGINE=InnoDB;

我需要检查两列:

这样做的有效方法是什么。

提前致谢。

P.S。考虑使用php和mysql

2 个答案:

答案 0 :(得分:1)

说重复表示用户名已存在。所以你可以试试:

1]使用for循环对插入列表中的所有用户名进行分组:伪代码如下:

  $names="";
  for(each element){
      $names.=$val.", ";
  //remove last comma ","

然后使用以下sql语句获取所有重复的条目。

  select * from myTable where username in ($names);

获得所有重复项的列表,然后插入

insert into myTable (username, address, otherstuff)
values("henry", "35 skid", "who knows")
ON DUPLICATE KEY UPDATE 
otherstuff = values(otherstuff);

答案 1 :(得分:0)

这样做的一种方法可能是插入所有内容,然后select duplicates以输出它们;如果发现任何回滚整个操作。那会非常昂贵。