重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
select?testid,count(1)?from?testtable?group?by?testid?having?count(1)1
創新互聯是一家專業從事成都網站設計、成都做網站、外貿網站建設、網頁設計的品牌網絡公司。如今是成都地區具影響力的網站設計公司,作為專業的成都網站建設公司,創新互聯依托強大的技術實力、以及多年的網站運營經驗,為您提供專業的成都網站建設、營銷型網站建設及網站設計開發服務!
count(1)就是重復在數量
如何查詢重復的數據
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1
PS:將上面的號改為=號就可以查詢出沒有重復的數據了。
Oracle刪除重復數據的SQL(刪除所有):
刪除重復數據的基本結構寫法:
想要刪除這些重復的數據,可以使用下面語句進行刪除
delete from 表名 a where 字段1,字段2 in
(select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面的SQL注意:語句非常簡單,就是將查詢到的數據刪除掉。不過這種刪除執行的效率非常低,對于大數據量來說,可能會將數據庫吊死。
建議先將查詢到的重復的數據插入到一個臨時表中,然后對進行刪除,這樣,執行刪除的時候就不用再進行一次查詢了。如下:
CREATE TABLE 臨時表 AS? (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) 1)
上面這句話就是建立了臨時表,并將查詢到的數據插入其中。
下面就可以進行這樣的刪除操作了:
delete from 表名 a where 字段1,字段2 in (select 字段1,字段2 from 臨時表);
select?row_number()?over(partition?by?判斷重復的字段?ORDER?BY?你想排序的字段)?as?fnum?from?表名
有問題追問
如果想查詢數據表中某一個字段重復(這里假設這個字段名是ID1),可以使用以下SQL語句。
select Table1.* from Table1 right join (
select ID1 From Table1 Group by ID1 having Count(ID1) 1 ) T on Table1.id1 = T.id1
如果想查詢數據表某兩個字段重復,則可以使用如下語句查詢。
select Table1.*
from Table1 right join (
select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) 1 and Count(ID2) 1 ) T
select?row_number()?over(partition?by?判斷重復的字段?ORDER?BY?你想排序的字段)?as?fnum?from?表名
有問題追問