當前位置:首頁 » 編程語言 » 刪除重復記錄sql語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

刪除重復記錄sql語句

發布時間: 2022-01-16 22:57:34

❶ 如何使用sql語句在sqlserver中刪除重復數據

題主可 參考下列例句:
刪除表t1欄位col1有重復的記錄

delete from t1 where exists
(select 1 from (select col1 from t1 group by col1 having count(1)>1) t where t.col1=t1.col1);

如果希望對於有重復的記錄希望保留其中一條記錄而不是全部刪除,則可以運行下列語句,前提是數據表必須含有自增id列。

delete from t1 where exists
(select 1 from (select col1,max(id) as id from t1 group by col1 having count(1)>1) t where t.col1=t1.col1 and t.id<>t1.id);

❷ 如何用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 A.ROWID FROM T A,T B
WHERE A.COL1=B.COL1 AND A.COL2 = B.COL2 AND A.ROWID > B.ROWID)

######################################

10. 刪除重復記錄

最高效的刪除重復記錄方法 ( 因為使用了ROWID)

DELETE FROM EMP E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM EMP X

WHERE X.EMP_NO = E.EMP_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資料庫 有多條記錄完全重復,怎麼刪除重復記錄,只保留一條,sql語句怎麼寫

如果只是要查詢不是重復的記錄的話
select distinct * from 表
如果是將多餘的重復記錄刪除
首先將不是重復的數據提取出來,保存到一個臨時表中
select distinct * into #temp from 表
然後刪除原來的表
delete from 表
最後往裡面插入臨時表的數據
insert into 表
select * from #temp

❹ SQL語句刪除重復記錄

delete from tb
where tb.field in
(select a.field from tb a,tb b
where a.rownum > b.rownum
&& a.filed = b.field) c

c表檢索的就是有重復欄位的

❺ sql查詢去掉重復記錄

1、打開要去掉重復數據的資料庫,這里新建一張含有重復數據的user表做示例,如下圖所示:

❻ SQL語句刪除重復的記錄

刪除重復的數據
delete from tb where id not in (
select id from
(select fileSize,fileName ,max(id) id from tb group by filesize,filename ) a
)

現在完成了重復數據的刪除,主要是利用了找出某個分組中最大的那個id,其中包括了所有不重復的id,然後使用not in將需要保留的排除。

❼ sql語句刪除重復記錄求教 謝謝~

delete from test where guid not in (select min(guid) from test group by id,follower)

這個是保留其他相同,guid最小的那條,當然你也可以把min改成max,保留guid最大的那條

----------補充-----------
delete from test where cast(guid as varchar(255)) not in (select min(cast(guid as varchar(255))) from test group by id,follower)

這樣,把guid轉成字元再刪

❽ SQL語句,刪除重復記錄。

如果按題目那個樣子,這個表只有一個欄位的話樓上的解答應該是合要求的吧。就是選出來存在一個臨時表裡然後再填回去:
select
distinct
test_name
into
#Tmp
from
test1
drop
table
test1
select
*
into
test1
from
#Tmp
drop
table
#Tmp
但是如果按正常的情況下這個表總會有個主鍵什麼的吧?比如說是有個自增的ID欄位。這種情況下就可以:
delete
test1
where
ID
not
in
(select
ID
from
test1
group
by
test_name)

❾ sql語句刪除重復的記錄

delete
from
Table_
where
欄位
in
(
--得到有重復記錄begin
select
欄位
from
(
select
欄位,
count(*)
as
c
from
Table_
group
by
欄位
)
a
where
c>0
--得到有重復記錄end
)
--不知道是不是你想要的答案.