重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你这个不是对列去重。你这个是行数据。
成都创新互联公司服务项目包括拉萨网站建设、拉萨网站制作、拉萨网页制作以及拉萨网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,拉萨网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到拉萨省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
对列的去重在查询语句加distinct,例如 select distinct XXX from tablename
或者载查询语句后面加group by
select distinct clom_name from table_name --利用distinct对列clom_name去重
select clom_name from table_name a
where rowid =(select max(b.rowid) from table_name b where a.clom_name=b.clom_name);
--利用rowid唯一标识的特性对列clom_name 去重
1。用rowid方法
据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
查数据:
select * from table1 a where rowid
!=(select max(rowid)
from table1 b where a.name1=b.name1 and
a.name2=b.name2......)
删数据:
delete from table1 a where rowid
!=(select max(rowid)
from table1 b where a.name1=b.name1 and
a.name2=b.name2......)
2.group by方法
查数据:
select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
group by num
having count(num) 1 --按num分组后找出表中num列重复,即出现次数大于一次
删数据:
delete from student
group by num
having count(num) 1
这样的话就把所有重复的都删除了。
3.用distinct方法 -对于小的表比较有用
create table table_new as select distinct *
from table1 minux
truncate table table1;
insert into table1 select * from table_new;
select col1,col2,count(*)
from tab_1
group by col1,col2
having count(*) 1;
查出来重复数据了
然后
delete tab_1 a where rowid in (
select max(rowid) from tab_1 b
where a.col1=b.col1
and a.col2=b.col2
);
OK,搞定!
记住了,删除之前一定要先备份,在查询是不是要删除的数据,然后再删除。
可用如下方法来进行删除重复的数据。
如test表中有如下数据:
要将name重复的删除,保留其中一条数据,可用如下语句:
delete from test where age not in (select min(age) from test group by name);
commit;
执行后结果: