SQL查詢中如何剔除重復
1,存在兩條完全相同的紀錄 這是最簡單的一種情況,用關鍵字distinct就可以去掉 example: select distinct * from table(表名) where (條件) 2,存在部分字段相同的紀錄(有主鍵id即唯一鍵) 如果是這種情況的話用distinct是過濾不了的,這就要用到主鍵id的唯一性特點及group by分組 example: select * from table where id in (select max(id) from table group by [去除重復的字段名列表,。
.]) 3,沒有唯一鍵ID example: select identity(int1,1) as id,* into newtable(臨時表) from table select * from newtable where id in (select max(id) from newtable group by [去除重復的字段名列表,。.]) drop table newtable 擴展資料 1、查找表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、刪除表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷,只留有rowid最小的記錄 delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 3、查找表中多余的重復記錄(多個字段) select * from vitae a where (*Id,*) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 參考資料:百度百科 結構化查詢語言。
SQL 怎么去除完全重復的數據
用SQL語句,刪除掉重復項只保留一條
在幾千條記錄里,存在著些相同的記錄,如何能用SQL語句,刪除掉重復的呢
1、查找表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、刪除表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷,只留有rowid最小的記錄
delete from people
where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1)
and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)
3、查找表中多余的重復記錄(多個字段)
select * from vitae a
where (*Id,*) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、刪除表中多余的重復記錄(多個字段),只留有rowid最小的記錄
delete from vitae a
where (*Id,*) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重復記錄(多個字段),不包含rowid最小的記錄
select * from vitae a
where (*Id,*) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
6.消除一個字段的左邊的第一位:
update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'
7.消除一個字段的右邊的第一位:
update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'
8.假刪除表中多余的重復記錄(多個字段),不包含rowid最小的記錄
update vitae set ispass=-1
where peopleId in (select peopleId from vitae group by peopleId
如何用SQL語句去掉重復記錄
COL1 中有重復記錄(COL1,COL2為主鍵),如何刪除
1、有少數重復記錄(在col1,col2上有索引比較好)
DELETE T
WHERE (COL1,COL2) IN
(SELECT COL1,COL2 FROM T GROUP BY COL1,COL2 HAVING COUNT(*) >1)
AND
ROWID NOT IN
(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2 HAVING COUNT(*) >1)
2、大部份記錄有重復記錄
DELETE T WHERE ROWID NOT IN
(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2)
3、其他寫法
DELETE T WHERE ROWID IN
(SELECT * FROM T A,T B
WHERE *1=*1 AND *2 = *2 AND * >*)
######################################
10. 刪除重復記錄
最高效的刪除重復記錄方法 ( 因為使用了ROWID)
DELETE FROM EMP E
WHERE * >(SELECT MIN(*)
FROM EMP X
WHERE *_NO = *_NO);
11. 用TRUNCATE替代DELETE
當刪除表中的記錄時,在通常情況下, 回滾段(rollback segments ) 用來存放可以被恢復的信息. 如果你沒有COMMIT事務,ORACLE會將數據恢復到刪除之前的狀態(準確地說是
恢復到執行刪除命令之前的狀況)
而當運用TRUNCATE時, 回滾段不再存放任何可被恢復的信息.當命令運行后,數據不能被恢復.因此很少的資源被調用,執行時間也會很短.
(譯者按: TRUNCATE只在刪除全表適用,TRUNCATE是DDL不是DML)
12. 盡量多使用COMMIT
只要有可能,在程序中盡量多使用COMMIT, 這樣程序的性能得到提高,需求也會因為COMMIT所釋放的資源而減少:
COMMIT所釋放的資源:
a. 回滾段上用于恢復數據的信息.
b. 被程序語句獲得的鎖
c. redo log buffer 中的空間
d. ORACLE為管理上述3種資源中的內部花費
求sql語句篩選重復數據并統計
表及數據 create table a(機構編碼 int,參保號 varchar(6),就診時間 datetime) insert into a values(2001,'321284','2012-06-01 08:43:28.193') insert into a values(2001,'321284','2012-06-01 14:46:56.320') insert into a values(2001,'321285','2012-06-03 08:48:37.323') insert into a values(2002,'321286','2012-06-02 08:45:24.163') insert into a values(2002,'321286','2012-06-02 08:03:50.550') insert into a values(2003,'321287','2012-06-07 08:39:55.233') 執行 select t.機構編碼,count(distinct 參保號)from(select 機構編碼,參保號,convert(varchar(10),就診時間,120) 就診時間,count(*) c from agroup by 機構編碼,參保號,convert(varchar(10),就診時間,120)) tgroup by t.機構編碼 結果 。
轉載請注明出處華閱文章網 » sql語句去重復數據