1。用rowid方法
創新互聯公司主營博州網站建設的網絡公司,主營網站建設方案,app軟件開發公司,博州h5微信小程序定制開發搭建,博州網站營銷推廣歡迎博州等地區企業咨詢
據據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;
方法一:可以通過group by 進行分組。\x0d\x0asql:select username,count(username) from tablename grop by username;\x0d\x0a解釋:以上sql就是通過分組函數讀取出tablename表中username的值和每個不同值的統計個數。\x0d\x0a方法二:可以通過distinct函數 進行去重查詢。\x0d\x0asql:select distinct username from tablename\x0d\x0a解釋:本sql就是查詢出所有的tablename表中的username值(不重復)。
(1)查找有沒有重復數據可以用去重統計(distanct+count)和本身的統計數據(count)對比,二者數據不同,那么就說明有重復數據。
(2)重復數據有哪些,可以用全體分組(group by+count)只要不等于1的就是就是重復數據
(3)在所有數據中顯示重復數據。要用到開窗函數rank()over(group by 全體字段),這樣可以給每條數據的前面都加上編號,也就是說只要前面的編號不是1,那么這條數據就是重復的。