mysql查询表中重复记录

mysql查询表中某个字段值重复的记录

也就是说,该字段值出现的个数是>=2,所以可以对该字段进行分组,然后对字段count计数,再筛选出>=2的count的值即可,具体实现如下:

select * from tb where 字段 in(

select 字段 from tb group by 字段 having count(字段)>=2);

查询多个字段值重复的记录:和上面类似,只不过分组和查询条件变成了多个字段:

select * from tb where (datetime,user) in
(select datetime,user from tb group by datetime,user having count(*)>=2);

过滤掉重复字段(完全重复的记录):

select distinct * from tb;

过滤掉重复字段(某些重复的字段值)

select * from tb where id in(select max(id) from tb group by 字段1,字段2)

删除有重复值的记录(针对单个字段的重复值),只保留id最大的那个:

delete from tb_test where id not in (select id from
(select max(id) id from tb_test group by datetime) t);

删除有重复值的记录(多个字段的重复值),只保留id最大的那个:

在group by 后面放入多个字段,逗号隔开

值得注意的是,要将查询到的Max值存入一个临时表,否则报错:You can’t specify target table for update in FROM clause

    原文作者:胜利女神yyds
    原文地址: https://blog.csdn.net/weixin_57234463/article/details/124038552
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞