乾草,我創建了一個爬行通過PDF文檔的蜘蛛,並將文檔中的每個單詞記錄到MySQL數據庫中的表格中。讓MySQL表格獨一無二
很顯然,像「the」,「and」,「or」等單詞出現在書中很多次。
我只是想知道什麼是從表中刪除dupe值最快的方法?
乾草,我創建了一個爬行通過PDF文檔的蜘蛛,並將文檔中的每個單詞記錄到MySQL數據庫中的表格中。讓MySQL表格獨一無二
很顯然,像「the」,「and」,「or」等單詞出現在書中很多次。
我只是想知道什麼是從表中刪除dupe值最快的方法?
沒有索引的話創建一個表,用書中插入的所有單詞插入(你也可以使用LOAD DATA)。當你與插入完成後,增加一個新的指數在word
場
然後使用創建第二個表:
CREATE TABLE newTable SELECT DISTINCT word FROM oldTable
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),您可以在普通列上設置唯一的索引。
選擇不同的單詞字段,然後刪除具有不同ID的所有行?我不是子查詢的主人,所以沒有例子atm :)
而不是刪除重複項,你可以確保沒有重複項進入表中。
意味着你的表只有2場,標識和文字:
INSERT INTO table SELECT null, 'word' FROM table WHERE NOT EXISTS (SELECT * FROM table WHERE word = 'word') LIMIT 1;
這將插入單詞到表只有當它不是已經在那裏
如果可以重新運行腳本來填充數據庫,你可以添加一個獨特的鍵入「單詞」字段,而不是INSERT INTO執行REPLACE INTO。這會在添加重複字段之前刪除記錄的前一個實例。這可能不是最有效的方式,但它很簡單。在這裏看到更多的細節:
字表被稱爲「單詞」,幷包含文字的字段爲「平原」 – dotty 2009-09-30 11:34:00