SQL怎樣刪除重複資料,sql中如何刪除一個表中重複的記錄

時間 2022-02-02 09:00:03

1樓:酒肉饞師

解決在excel電子**中,如果混雜有重複資料,如何定位,如何刪除的問題。

2樓:擅長資料庫育兒

首先刪除一張表中可能存在的重複資料:

delete from 表 where 欄位1 in(select 欄位1 from

(select 欄位1,row_number() over (partition by 欄位1 order by 欄位2 desc) rn from 表)

where rn>1);

以上欄位1為需要刪除的依據欄位,比如說你需要刪除重複的郵箱,那麼欄位1表示郵箱,而欄位2是按照順序你需要保留的記錄,比如說按照時間排序,保留時間最近的那個郵箱。

刪除一張表中的另一個表中已經存在的記錄

delete from 表1 where exists(selete 1 from 表2 where 表1.欄位=表2.欄位);

sql中如何刪除一個表中重複的記錄?

3樓:

sql中刪除一個表中的重複記錄可以採用如下步驟:

1、把a_dist表的記錄用distinct去重,結果放到臨時表中。

select  distinct * into #temp from a_dist;

2、把a_dist表的記錄全部刪除。

delete  from a_dist;

3、把臨時表中的資料資訊導進到a_dist表中,並刪除臨時表。

insert  into a_dist select * from #temp;

drop table #temp;

4樓:南北

資料庫去重複有以下三種方法:

1.兩條記錄或者多條記錄的每一個欄位值完全相同,這種情況去重複最簡單,用關鍵字distinct就可以去掉。

2.兩條記錄之間之後只有部分欄位的值是有重複的,但是表存在主鍵或者唯一性id。如果是這種情況的話用distinct是過濾不了的,這就要用到主鍵id的唯一性特點及group by分組。

3.兩條記錄之間之後只有部分欄位的值是有重複的,但是表不存在主鍵或者唯一性id。這種情況可以使用臨時表,講資料複製到臨時表並新增一個自增長的id,在刪除重複資料之後再刪除臨時表。

5樓:匿名使用者

可以給你個想法,把不重複的多出來放到一個臨時表中,刪除原表,再將臨時表的資料插入原表

6樓:匿名使用者

先刪後加

delete from a_dist where id ='1' and name= 'abc' 執行刪掉所有這樣的記錄,然後把資料記錄下來在新增一次

insert into a_dist values(1,'abc');

7樓:匿名使用者

如果記錄完全相同才算重複記錄,那麼: (sql server2000下測試通過)

select distinct * into #tmpp from tid

delete from tid

insert into tid select * from #tmpp

drop table #tmpp

如果有id主鍵(數字,自增1的那種),那麼:(sql server2000下測試通過)

delete from tablea where id not in

(select id = min(id) from tablea group by name)

8樓:匿名使用者

還是跟著熱心網友混生活吧。

9樓:天之痕

delete 表 a wher rowid <>(max(rowid) from 表 b

where a.重複項=b.重複項 );

10樓:匿名使用者

create view a_dist_view as

select a.*, row_number() over(order by id, name) rn from a_dist as a

delete from a_dist_view where rn <> 1

sql查詢,如何去除重複的記錄?

11樓:匿名使用者

上面的回答可以,不過我覺得還有更簡單的方法:

select aid, count(distinct uid) from 表名 group by aid

這是sqlserver 的寫法。。。

12樓:樂園小

select distinct 文章aid,使用者uid from table名

13樓:匿名使用者

select * from table a where id in(select max(id) from table bwhere a.uid=b.uid and a.

aid=b.aidgroup by uid)

14樓:匿名使用者

select

aid,

count(distinct uid)

from 表名

group by aid

15樓:匿名使用者

select aid, count(*) from (select distinct aid, uid from 表名) group by aid

16樓:紫燕佳琪

select distinct 。。。。。。

select後加個distinct去掉重複

17樓:雁子

去除重複記錄(兩行或兩行以上記錄中系列的上的資料都相同),例如emp表中sal欄位就存在相同的記錄。當只查詢emp表的sal欄位時,那麼會出現重複記錄,那麼想去除重複記錄,需要使用distinct:

selectdistinctsalfromemp;

sql中怎麼刪除兩條重複記錄並保留一條 10

18樓:射手幽靈伊

首先,在表裡加一個自增長的欄位,假設取名為id,這樣每條記錄就有了唯一標識id了,

然後,使用 group by 的方式,取出重複記錄的大的id或是最小的id,刪除這個取出來的id值的記錄,就可以了。

19樓:

用top 一點一點刪除。 如果一次刪除太多會寫入sql日誌 影響效率

20樓:匿名使用者

記錄雖然重複。但是肯定有不重複的資訊欄位a 以這個資訊欄位a作為標識。

用重複的關鍵資訊查詢與a匹配的第一條資料的a。a以外的資料就可以刪除。也可以查詢重複欄位記錄count》1的作為條件去找。

21樓:小聖

表結構如下

test (id int,name varchar2,age int)

1 張三 10

2 張三 10

3 李四 20

4 李四 20

5 王五 19

除了id外其他欄位全部相同的記錄只保留一條 刪除多餘的記錄delete test where id not in(select max(id) from test group by name,age)

如果沒有id ,就用rowid

delete test where rowid not in(select max(rowid) from test group by id,name,age) --注意group by後的欄位.

22樓:匿名使用者

你的資料是有部分重複還是整行所有欄位都重複?有類似標識列id的嗎

sql刪除重複資料只保留一條,sql刪除重複資料只保留一條

神弟 具體的sql我不知道,但是如果沒理解錯需求是 表中有重複資料,要求保留1條!可以這樣子實現 1 先去重查出資料 即查出表中所有資料 都是唯一的 2 把這1份資料保留起來 我用的工具是aqua data studio,因此查出資料後 全選 右鍵 儲存結果 其中資料格式 insert語句 3 清空...

SQL中怎麼刪除不完全重複的重複項

關鍵得看具體情況,比如前5個字元一樣的可認為是相同的就可用 left a.欄位名,5 left b.欄位名,5 為條件,如果是差在一些特定的符號 比如逗號和句號 則可用repalce replace a.欄位名,repalce replace b.欄位名,為條件,就是將不同的字元都替換成空,複雜一點...

SQL重複資料只顯示一條,查詢語句怎麼寫

吳佳航 sql重複資料只顯示一條,查詢語句編碼的寫法是 如果是所有欄位都重複,使用 distinct。如果部分欄位重複,只能使用group by 或是其他的方法。結構化查詢語言 structured query language 簡稱sql 發音 es kju el s q l 是一種特殊目的的程式...