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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐