SQL查詢和刪除重複值

如題,SQL查詢和刪除重複值,例子是在Oracle環境下,相似寫法網上不少。
一、利用distinct關鍵字去重
二、利用group by分組去重(這裏沒有實驗出來就不寫了)
三、利用rowid查詢去重(我的推薦這個,rowid查詢速度是最快的)測試

先一張測試表(USERS),裏面有不少重複數據
圖片描述spa

方法一:distinct關鍵字code

/*對username字段去重*/
select distinct username from users;

圖片描述

/*根據字段去重,可是多個字段時候只能去全字段重複的數據*/
select distinct username,password from users;

圖片描述

方法二:用rowid方法進行全字段重複查詢,也能夠按字段查詢重複值
注:先查詢出最後一條的全字段重複值,在用rowid找出其餘剩餘的重複值圖片

select * from users u01 where rowid!=
(
select max(rowid) from users u02 
where u01.username=u02.username and 
u01.password=u02.password and 
u01.age=u02.age and 
u01.sex=u02.sex
)

圖片描述

刪除重複數據(這裏刪除的是全字段重複的數據,根據不一樣狀況where後面條件適當修改)it

delete from users u01 where rowid!=
(
select max(rowid) from users u02 
where u01.username=u02.username 
and u01.password=u02.password
and u01.age=u02.age 
and u01.sex=u02.sex
)

圖片描述

相關文章
相關標籤/搜索