2012-03-26 89 views
-4

在将数据插入表之前,我需要检查重复记录和这些记录的报告列表。 查询不应该插入任何东西,而至少有一个重复。插入检查多个重复记录

的记录数:约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

+0

其实也没什么。唯一想到的是检查每一条记录是否有重复。但它似乎并不高效。 你会做什么? – Turgut 2012-03-26 17:40:23

+0

是否有某些东西阻止您使用唯一密钥来拒绝重复项? – gapple 2012-03-26 17:43:09

+0

@Turgut:我们不喜欢在问问题之前什么也不试试的人:)你应该去试试* *。也许你会有更好的问题。也许你根本没有问题。 – 2012-03-26 17:45:38

回答

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

这样做的一种方法可能是插入一切,然后select duplicates为了输出它们;如果发现有任何回滚整个操作。这将是相当昂贵,但。