查出重复的type
SELECT type FROM table GROUP BY type HAVING count(type) > 1;
查出重复的type数据中最小的id
SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1;
查出重复的type数据中非最小的id(需要删除的)
SELECT id FROM table WHERE type in(
SELECT type FROM table GROUP BY type HAVING count(type) > 1)
AND id not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1);
在Mysql中是不能删除查询出来的记录,而是要通过一张临时表来解决
SELECT id from (
SELECT id FROM table WHERE type in(
SELECT type FROM table GROUP BY type HAVING count(type) > 1)
AND id not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1)
) as t;
删除type重复的数据(只保留一条,保留最小id的)
DELETE FROM table WHERE id IN (
SELECT id from (
SELECT id FROM table WHERE type in(
SELECT type FROM table GROUP BY type HAVING count(type) > 1)
AND id not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1)
) as t
);
© 版权声明
本站使用 CC4.0 协议发布文章,转载请附带本站地址。本站资源大多来源于网络收集,请自行判断安全性。
THE END
- 最新
- 最热
只看作者