在MySQL中,經常需要進行去重操作。但是有時候我們需要保留重復數據中ID小的一條記錄,這時候就需要使用一些SQL語句進行篩選操作。
SELECT MIN(id), name, COUNT(*) FROM table_name GROUP BY name HAVING COUNT(*) >1;
上面的查詢語句中,首先使用MIN函數來選擇ID最小的一條記錄,然后通過GROUP BY name對重復的記錄進行分組,最后使用HAVING COUNT(*) >1篩選出重復的記錄。
如果需要刪除重復數據,可以使用以下語句:
DELETE FROM table_name WHERE id NOT IN (SELECT MIN(id) FROM table_name GROUP BY name);
上面的語句中,使用NOT IN子句排除掉保留的一條記錄,然后通過子查詢選出需要保留的記錄。
除了以上方法,還可以使用INSERT IGNORE語句來保留ID小的一條記錄:
INSERT IGNORE INTO new_table_name (id, name) SELECT MIN(id), name FROM table_name GROUP BY name;
上面的語句中,使用INSERT IGNORE忽略重復的記錄,然后通過子查詢選出需要保留的記錄,并將其插入新的表中。
以上就是關于MySQL去重保留ID小的一些操作,可以根據具體需求選擇不同的方法。