求刪除SQL資料庫中某個表的重複資料

2022-11-15 12:25:23 字數 5929 閱讀 3358

1樓:

1.先將umane用一個臨時表存起來

select distinct(uname) uname into #a form users

2.刪除users表內的資料

delete from users

3.把臨時表使用者加到users表中,並將預設upwd全設為1234要看你upwd是什麼資料型別 如果是數字的就

insert users select uname,1234 from #a

是字元型的

insert users select uname,'1234' from #a

4.最後刪除臨時表

drop table #a

這樣所有人的初始密碼都變為1234

2樓:匿名使用者

有一個簡單的方法:

先建一張表 users2,表結構和users一樣然後insert into users2select distinct * from userscommit;

然後把users表刪除,users2表名改為users補充:可以不用臨時表的方法

delete from users

where rowid not in

(select rowid

from

(select a.rowid,a.*,row_number() over (partition by uname,upwd order by uname) num from users a)

where num<=1)

3樓:匿名使用者

如何查詢重複記錄?

select * from users

where rowid!=(select max(rowid) from users d

where users.uname=d.uname and users.upwd=d.upwd);

如何刪除重複記錄?

delete from users

where rowid!=(select max(rowid) from user d

where user.uname=d.uname and users.upwd=d.upwd);

試試吧,切記,刪之前先備份。

4樓:落月

select distinct * into #tmp from tablename

drop table tablename

select * into tablename from #tmpdrop table #tmp

利用臨時表進行刪除,把tablename改成你的表名就行了。

5樓:蝴蝶飛起來了

1.增加一個自增1的索引列

2.刪除部分欄位重複資料,僅保留id最小的一條記錄delete 《表名》 from 《表名》 aleft join(

select 索引列=min(索引列) from 《表名》

group by 《重複列名》--多條重複,逗號間隔)b on b.索引列=a.索引列

where b.索引列 is null;

3.刪除索引列

6樓:匿名使用者

如果是oracle,那可以利用rowid,效率很高delete from users where rowid in(select rid from

(select rowid rid,row_number() over(partition by uname order by rowid) rn from users)

where rn <> 1 );

如果是sql,就會慢一些

select uname,upwd into users_1 from users group by uname,upwd;

truncate table users;

drop table users;

renname users_1 to users;

7樓:

/**據oracle書記載,使用下面得語句可以刪除重複記錄,並且效率最高**/

delete from users where rowid in(select row_id from

(select rowid row_id,row_number() over (partition by uname,upwd order by rowid ) rn from users

) where rn <> 1);

8樓:匿名使用者

試試這個

delete from users

where rowid!=(select max(rowid) from user d group by uname,upwd )

9樓:匿名使用者

1、將源表資料備份

2、建立臨時表 temp_users,同樣包含欄位uname,upwd,資料型別與源表一致。

3、insert into temp_user select * from users group by uname,upwd

4、查詢表temp_users,看裡面資料是否是想要的、準確無誤的。

5、確認表temp_users中資料準確無誤後,刪除源表users中的資料

6、insert into users select * from temp_users

7、確認users表中資料ok後,drop table temp_users

ps:切忌第一步不要忘了。

補充回答:

用臨時表,是最穩的,最易懂的,最好掌握的,最可控的。

不用臨時表的方法有,上面這麼多人都說了,用之前還請驗證一下正確性,避免不必要的損失。

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

10樓:

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;

11樓:南北

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

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

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

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

12樓:匿名使用者

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

13樓:匿名使用者

先刪後加

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

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

14樓:匿名使用者

如果記錄完全相同才算重複記錄,那麼: (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)

15樓:匿名使用者

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

16樓:天之痕

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

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

17樓:匿名使用者

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資料庫中某個表的重複資料

18樓:麼睿識充騰

1.先將umane用一個臨時表存起來

select

distinct(uname)

uname

into

#aform

users

2.刪除users表內的資料

delete

from

users

3.把臨時表使用者加到users表中,並將預設upwd全設為1234要看你upwd是什麼資料型別

如果是數字的就

insert

users

select

uname,1234

from

#a是字元型的

insert

users

select

uname,'1234'

from

#a4.最後刪除臨時表

drop

table

#a這樣所有人的初始密碼都變為1234

19樓:貿水風樑玲

select

distinct

*into

#tmp

from

tablename

drop

table

tablename

select

*into

tablename

from

#tmp

drop

table

#tmp

利用臨時表進行刪除,把tablename改成你的表名就行了。

sql server如何刪除一張表中與另一張表相同的資料

20樓:匿名使用者

兩種方式,一種是用巢狀,一個是關聯。

巢狀:如表1有如下資料

id   name

1     張三

2     李四

3     王五

表2有如下資料

id現在要刪除表1中含有表2中id的資料,可用以下語句:

delete from 表1 where id in (select id from 表2)

關聯:如表1有如下資料

id   name

1     張三

2     李四

3     王五

表2有如下資料

id    name

1      張三

2      哈哈

現在要刪除表1中id和name同時等於表2中id和name的資料,可用以下語句:

delete from 表1 where exists (select 1 from 表2 where 表1.id=表2.id and 表1.name=表2.name);

求SQL。由於資料庫資料異常,求找出表A主鍵id相同,表資料記錄不一樣的記錄明細。舉例說明

select distinct t1.from tablea t1,tablea t2where t1.id t2.id and t1.col1 t2.col1 or t1.col2 t2.col2 問題就有錯,a 主鍵id相同,根本不可能。或者說你的資料表,用兩個欄位作主鍵,查詢兩個相同表中不同記...

求sql資料庫考試題答案,SQL資料庫考試試題,求高手解答

1.create database readbookon name readbook data,filename d server readbook data.mdf size 2mb,maxsize 10mb,filegrowth 1mb log on name readbook log,file...

如何獲取mysql資料庫中某個表的主鍵或唯段

主鍵確定的資料庫記錄行數唯一,但是主鍵組成不唯一,可以由多個欄位組成 主關鍵字 主鍵,primary key 是被挑選出來,主關鍵字作表的行的唯一標識的候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。又稱主碼。並且...