MySQL是一種開源的關系型數據庫管理系統,廣泛應用于Web應用程序的開發和管理。它提供了一個簡單易用的SQL語言,使得對數據庫中數據的操作變得高效和便捷。在MySQL中,有時候需要將數據庫中的重復記錄合并,并保留其中一條數據作為標準的記錄。下面介紹一種實現這個功能的方法。
CREATE TABLE `duplicate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
以上代碼創建了一個名為duplicate的表,該表中包含了3個字段,分別是id、name和age。其中,id字段是主鍵,用于標識每一條記錄,并且采用了自動增量的方式進行編號。
INSERT INTO `duplicate` (`id`, `name`, `age`) VALUES (1, 'Tom', 20), (2, 'Lucy', 18), (3, 'Tom', 20), (4, 'Jack', 22), (5, 'Lucy', 19), (6, 'Tom', 21), (7, 'Lucy', 18);
以上代碼向duplicate表中插入了7條記錄,其中出現了重復的記錄,如id為1和3、2和7的記錄,它們都表示同一個人。
SELECT MAX(id) AS max_id, name, age FROM `duplicate` GROUP BY name, age HAVING COUNT(*) >1;
以上代碼查詢了重復記錄中的每一個人(即name和age相同的記錄),然后用MAX函數將每一個人的所有記錄的ID合并在一起,取其中的最大值作為標準記錄的ID。
DELETE FROM `duplicate` WHERE id NOT IN ( SELECT max_id FROM ( SELECT MAX(id) AS max_id, name, age FROM `duplicate` GROUP BY name, age HAVING COUNT(*) >1 ) AS t );
以上代碼根據查詢結果中的標準記錄ID,刪除與其不匹配的其他記錄。執行完以上SQL語句后,表中的記錄就被成功地合并了。