我有一個數據庫表中包含的字段:搜索包含重複字段的行並刪除它們的Mysql查詢?
username, description, password.
有時候,成員從一另一份說明,爲了節省時間
所以我有這樣的:
約翰 - 約翰的描述 - 約翰的密碼
Michael - John的描述 - 邁克爾的密碼
是否有mysql查詢搜索重複的字段條目並刪除它們? 如何在我們訪問時刪除整行數據?
我有一個數據庫表中包含的字段:搜索包含重複字段的行並刪除它們的Mysql查詢?
username, description, password.
有時候,成員從一另一份說明,爲了節省時間
所以我有這樣的:
約翰 - 約翰的描述 - 約翰的密碼
Michael - John的描述 - 邁克爾的密碼
是否有mysql查詢搜索重複的字段條目並刪除它們? 如何在我們訪問時刪除整行數據?
創建一個新表,移動非重複條目,刪除舊錶並重新命名一個新表。
例子:
CREATE TABLE `new_table` as
SELECT * FROM `old_table` WHERE 1 GROUP BY [columns to remove duplicates by];
DROP TABLE `old_table`;
RENAME TABLE `new_table` TO `old_table`;
然而,這是很好的只是定期使用,並且它不檢查是否有任何重複。它只是將獨特的條目分組並將它們移動到另一個表格。當你想過濾你的條目時它很有用。
另一種方法是檢查這樣的:
SELECT `name` FROM `table` WHERE `description` LIKE '%descriptiontexthere%'
然後,如果一些結果發現,這是一個重複的。
但是,有一個很大的缺點:用戶只能更改一個字母,查詢將失敗。
但是,通過將描述拆分爲數組可以避免(不完全)該缺點。例如,每隔100個字符分割一次,然後像上面的例子那樣檢查,但是有多個條件(例如description LIKE 'first100chars' OR description LIKE 'second100chars'
)。
第三種方法是將描述拆分爲單詞數組,然後選擇具有太多相同單詞的行。與X相同的單詞行可能是一個可能的重複。您可以根據輸入描述的長度設置閾值。
你永遠無法確定它是否重複,除非它是完全相同的條目。
Ty非常適合回答,現在正在測試查詢。 – webmasters 2012-07-25 00:00:58
您不應將密碼存儲在數據庫中。 – 2012-07-24 23:11:17
完全重複行或只是任何重複的字段? – Ryan 2012-07-24 23:11:39
如果說明有意相同,該怎麼辦? – zerkms 2012-07-24 23:11:42