我有一個擁有7000多條記錄的數據庫。事實證明,這些記錄中有多個重複項。我發現了幾條關於如何刪除重複項並只保留1條記錄的建議。 但在我的情況下情況有點複雜:如果他們持有與另一個記錄相同的數據,個案不是簡單的重複。相反,有幾個案例完全可以保存相同的數據。只有當它們持有相同的數據並且都在30秒內插入時,它們才被標記爲複製。刪除MySQL數據庫中的重複數
因此我需要重複刪除一個SQL語句(如:所有領域,除id
和datetime
)如果已經插入40秒內範圍(例如:評估datetime
場)。
因爲我只是一個SQL專家,無法在網上找到合適的解決方案,所以我真的希望你們中的一些人能幫助我並指出我朝着正確的方向發展。這將非常感激!
表結構如下:
CREATE TABLE IF NOT EXISTS `wp_ttr_results` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`schoolyear` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
`datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`area` varchar(15) CHARACTER SET utf8 NOT NULL,
`content` varchar(10) CHARACTER SET utf8 NOT NULL,
`types` varchar(100) CHARACTER SET utf8 NOT NULL,
`tasksWrong` varchar(300) DEFAULT NULL,
`tasksRight` varchar(300) DEFAULT NULL,
`tasksData` longtext CHARACTER SET utf8,
`parent_id` varchar(20) DEFAULT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68696 ;
因此,只要再次澄清,一個重複的情況下,這樣的情況是:
[1]保持相同的數據作爲另一種情況下用於所有領域,除了id
和datetime
字段
[2]插入在DB,根據datetime
字段,另一個記錄40秒內用相同的值
如果滿足兩個條件,則應刪除除1之外的所有情況。
這個ID總是不同的吧?所以重複意味着所有的列,但ID號? – Juru
@Juru ID的確總是不同的(因此auto_increment)。重複保存相同的數據,除了ID和日期時間字段BUT插入其他記錄保存相同數據的40秒內(再次,除了ID和日期時間字段) –
您的問題有一個非常特殊的困難。這是40秒的過濾。如果考慮重複項d1(1),d2(30),d3(41)(數字是創建秒數)。 d2會與d1重複,但d3不會。但是d3對於d2是重複的。那麼d3是否重複?對我而言,只有d2將不得不被刪除,這使得這個問題很難解決。 – Juru