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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |