先说思路,
正常思路 查重复的,重复里保留max 最大的或者最小的id,然后其他删掉,
来博主提供个新逻辑,朋友那边学到的:
建个字典,以关键字 做个字典,去掉字典以外的数据(以外的就是重复的);
表如下
1、跟着博主一句一句打
select max(id) as max_id FROM test GROUP BY text
以text来分组,你会得到 一个不重复的字典,
2、 临时表视图
SELECT r.max_id FROM (
select max(id) as max_id FROM test GROUP BY text
) as r
3、删除不在字典里的
DELETE FROM test WHERE id not in(
SELECT r.max_id FROM (
select max(id) as max_id FROM test GROUP BY text
) as r
)
扩展
来来,扩展下,如果你批量插入1000多条数据,而1000多条数据,你怕重复插入了数据库,比如我text 不想重复,我可以设置数据库 text 为唯一索引
,有人会说,这样你插到第500条时候报错了,那501条就不继续插入了,
其实还是看应用场景的如果我的主观是这1000条里不重复的数据进行插入动作, 重复不插入,那就执行下面这个方法就好了
test是表名,text是插入的字段。
INSERT IGNORE INTO test (text) VALUES ('test1'),('222'),('test2')