2012-03-26 91 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爲了輸出它們;如果發現有任何回滾整個操作。這將是相當昂貴,但。