C列也要考慮對么?
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出文安免費做網(wǎng)站回饋大家。
delete from table x
where not exists (select 1 from (select a,b,max(c) c from table group by a,b ) y
where x.a=y.a and x.b=y.b and x.c=y.c);
隨機刪除重復(fù)列:
delete from table x
where exists(select 1 from (select a, b, max(rowid) max_rowid from table group by a, b) y
where x.a=y.a and x.b=y.b and x.rowid y.max_rowid);
select t.a,t.b,t.c from
(select a,b,c from 表A group by a,b,c) t
沒用到什么函數(shù),就一個group by ,是用來去重的,
你可以把括號里的先執(zhí)行,看下結(jié)果,外邊就是一個從括號里再選出a,b兩個字段
1 a
1 b
1 c
如上三行記錄,你想要查詢的結(jié)果是什么?
1。用rowid方法
據(jù)據(jù)oracle帶的rowid屬性,進行判斷,是否存在重復(fù),語句如下:
查數(shù)據(jù):
select * from table1 a where rowid
!=(select max(rowid)
from table1 b where a.name1=b.name1 and
a.name2=b.name2......)
刪數(shù)據(jù):
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方法
查數(shù)據(jù):
select count(num), max(name) from student --列出重復(fù)的記錄數(shù),并列出他的name屬性
group by num
having count(num) 1 --按num分組后找出表中num列重復(fù),即出現(xiàn)次數(shù)大于一次
刪數(shù)據(jù):
delete from student
group by num
having count(num) 1
這樣的話就把所有重復(fù)的都刪除了。
3.用distinct方法 -對于小的表比較有用
create table table_new as select distinct *
from table1 minux
truncate table table1;
insert into table1 select * from table_new;
create table 新表名 as select distinct * from 舊表名
drop table 舊表名
create table 舊表名 as select * from 新表名
drop table 新表名