2009-09-30 35 views
0

乾草,我創建了一個爬行通過PDF文檔的蜘蛛,並將文檔中的每個單詞記錄到MySQL數據庫中的表格中。讓MySQL表格獨一無二

很顯然,像「the」,「and」,「or」等單詞出現在書中很多次。

我只是想知道什麼是從表中刪除dupe值最快的方法?

回答

3

沒有索引的話創建一​​個表,用書中插入的所有單詞插入(你也可以使用LOAD DATA)。當你與插入完成後,增加一個新的指數在word

然後使用創建第二個表:

CREATE TABLE newTable SELECT DISTINCT word FROM oldTable 
0
delete from words where idcolumn not in 
    (select min(idcolumn) 
    from words T2 
    where T2.plain = WordsTable.plain) 

如果您爲每個找到的單詞添加了(idcolumn, plain)

如果您沒有id列(pk),那麼您可以使用Anax的解決方案。

除了不插入重複項(codeburger comment),您可以在普通列上設置唯一的索引。

+0

字表被稱爲「單詞」,幷包含文字的字段爲「平原」 – dotty 2009-09-30 11:34:00

0

選擇不同的單詞字段,然後刪除具有不同ID的所有行?我不是子查詢的主人,所以沒有例子atm :)

1

而不是刪除重複項,你可以確保沒有重複項進入表中。

意味着你的表只有2場,標識和文字:

INSERT INTO table SELECT null, 'word' FROM table WHERE NOT EXISTS (SELECT * FROM table WHERE word = 'word') LIMIT 1; 

這將插入單詞到表只有當它不是已經在那裏

1

如果可以重新運行腳本來填充數據庫,你可以添加一個獨特的鍵入「單詞」字段,而不是INSERT INTO執行REPLACE INTO。這會在添加重複字段之前刪除記錄的前一個實例。這可能不是最有效的方式,但它很簡單。在這裏看到更多的細節:

http://dev.mysql.com/doc/refman/5.0/en/replace.html