1.1 查询
最常见情况如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组
select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....])
1.1.2 存在两条完全相同的记录用关键字distinct就可以去掉
select distinct id(某一列) from table(表名) where (条件)
1.1.3 查找表中不含重复的数据,根据单个字段(id)来判断
select * from table where id in (select id from table group by id having count (id) >1)
1.1.4 查找表中重复的数据,根据单个字段(id)来判断
select * from table where id not in (select id from table group by id having count (id) >1)
1.1.5 查询全部的重复信息
select * from people where id not in (select min(id) from people group by name,sex HAVING COUNT(*) <2)
1.1.6 查询全部的重复信息
select * from table where id not in (select MIN(id) from table group by name,sex)
1.1.7 删除多余重复的信息,只保留最小ID
delete from table where id not in(select MIN(id) from table group by name,sex)
select * from table1Union
select * from table1
注:Union ALL不会过滤重复的
而Union相当于连表后在用distinct 会很慢
两种方式:第一种,在代码中实现。插入数据前先通过查询判断数据库中是否已存在同样的数据,不存在再插入。
第二种,在数据库中建立唯一索引。这样插入数据时,如果数据重复,插入 *** 作会抛出异常,插入失败。达到去重的目的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)