1.在運算元據庫的時候往往會出現一條資料重複出現多次,而且沒有唯一標識的情況下該如何刪除重複資料呢?
解決方案: 先用distinct 查出所有不重複的資料,然後存入到乙個臨時表中,刪除現有表的所以資料,把臨時表資料匯入。
select distinct * into #tmp from emp
delete from emp
insert into emp select * from #tmp
(2)但是如果不可以使用臨時表,那該怎麼辦?
我們觀察到我們沒辦法區分資料(物理位置不一樣,對 sql server來說沒有任何區別),思路自然是想辦法把資料區分出來了,既然現在的所有的列都沒辦法區分資料,唯一的辦法就是再加個列讓它區分出來,加什麼列好?最佳選擇是identity列:
alter table emp add chk int identity(1,1)
表示例:
name age chk
tom 16 1
sun 14 2
tom 16 3
tom 16 4
重覆記錄可以表示為:
select * from emp where (select count(*) from emp e where e.name=emp.name)>1
要刪除的是:
delete from emp
where (select count(*) from emp e where e.name=emp.name and e.chk>=emp.chk)>1
再把新增的列刪掉,出現結果。
alter table emp drop column chk
刪除重複資料
介紹兩種刪除重複行的方式 1.使用臨時表,分組找出重複部分的id進行刪除 刪除table goods info 中存在重複goods id的記錄 select identity int,1,1 as autoid,into temptable from goods info select min a...
sql刪除重複資料
1 建立表 create table dbo test id numeric 18,0 identity 1,1 not null primary key,name varchar 200 collate chinese prc ci as null remark varchar 1024 coll...
mysql刪除重複資料
最近遇到刪除重複資料的問題,先分享一下解決辦法,如有不完善之處還望包涵!舉例如下 mysql select from table03 id name degree 1 fly 90 2 fly 90 3 fly 90 4 fly 80 5 wang 90 6 wang 90 7 wang 90 8 ...