① sql查詢去除重復記錄
select distinct(*)
from 表名
where 職業="無業"
上邊distinct 就是去除重復的關鍵字
② 如何用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 Server刪除重復行是我們最常見的操作之一,下面就為您介紹六種適合不同情況的SQL Server刪除重復行的方法,供您參考。
1.如果有ID欄位,就是具有唯一性的欄位
delect table where id not in (
select max(id) from table group by col1,col2,col3...
)
group by 子句後跟的欄位就是你用來判斷重復的條件,如只有col1,那麼只要col1欄位內容相同即表示記錄相同。
2. 如果是判斷所有欄位也可以這樣
select * into #aa from table group by id1,id2,....
delete table
insert into table
select * from #aa
3. 沒有ID的情況
select identity(int,1,1) as id,* into #temp from tabel
delect # where id not in (
select max(id) from # group by col1,col2,col3...)
delect table
inset into table(...)
select ..... from #temp
4. col1+','+col2+','...col5 聯合主鍵
select * from table where col1+','+col2+','...col5 in (
select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)
group by 子句後跟的欄位就是你用來判斷重復的條件,如只有col1,那麼只要col1欄位內容相同即表示記錄相同。
5.
select identity(int,1,1) as id,* into #temp from tabel
select * from #temp where id in (
select max(id) from #emp where having count(*)>1 group by col1,col2,col3...)
6.
select distinct * into #temp from tablename
delete tablename
go
insert tablename select * from #temp Sqlclub
go
drop table #temp
以上就是SQL Server刪除重復行的方法介紹。
④ SQL中如何刪除重復數據
select
欄位1,欄位2,欄位3
from
table
group
by
欄位1,欄位2,欄位3
having
count(*)>1
用上邊這句能找出所有重復的數據
欄位1,2,3你替換成你表裡的欄位名,如果有更多欄位的話,你就繼續添加,最後group
by的時候不要忘記了
刪除的時候要建立一個臨時表
create
table
new_table
as
select
欄位1,欄位2,欄位3
from
old_table
group
by
欄位1,欄位2,欄位3;
然後刪除原表數據
truncate
table
old_table;
然後把臨時表數據反插回去
insert
into
new_table
select
*
from
old_table;
⑤ 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
(5)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 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 (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
⑥ 求助SQL:如何刪除重復數據
例如:記錄雖然存在重復,但是rowid是唯一的,所以在子查詢取得重復行中最小的rowid,刪除重復行中
大於最小的rowid的行,只是保留了最小rowid的行,就是刪除了重復行。
這個語句如果要調優的話,可以在內部查詢中建索引
delete from ttt a where rowid>(select min(rowid) from ttt b where a.name=b.name);
⑦ SQL查詢,如何去除重復的記錄
首先,先說明一個問題。這樣的結果出現,說明系統設計是有問題的。
其次
刪除重復數據,你要提供你是什麼資料庫。
不同資料庫會有不同的解決方案。
關鍵字Distinct 去除重復,如下列SQL,去除Test相同的記錄;
1. select distinct Test from Table
2. 如果是要刪除表中存在的重復記錄,那就邏輯處理,如下:
3. select Test from Table group by Test having count(test)>1
4. 先查詢存在重復的數據,後面根據條件刪除
還有一個更簡單的方法可以嘗試一下:
select aid, count(distinct uid) from 表名 group by aid
這是sqlserver 的寫法。
如圖一在數據表中有兩個膀胱沖洗重復的記錄。
⑧ 【sql去除重復數據】
select
DISTINCT finger,width,height,size,type
form image
order by finger,width,height,size,type
⑨ SQL裡面如何刪除重復的記錄
方法1 最簡單的方法,拿出唯一的記錄集,放入中間表。原表清空,再把數據導回來。數據少的話很快。
select distinct UPPER(Stu_ID),*from tableName
方法2 如果這個表特別大,導表的方法速度受不了的話:
找出所有重復記錄
select * from tableName where Stu_ID_UP in (
select Stu_ID_UPfrom (select UPPER(Sut_ID) Stu_ID_UP from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)然後人工查看一下這些數據,推測這些重復數據產生的原因,是輸入錯誤、代碼邏輯錯誤、還是業務邏輯錯誤。要是業務原因,那一定要跟業務部門談好解決方案,別刪完出狀況。
經過第2步的各種確認刪除方法後,開始刪~
保留rowid最小的記錄
delete from tableName a
where (a.Stu_ID) in (
select Stu_ID_UP
from (
select UPPER(Sut_ID) Stu_ID_UP
from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)
and rowid not in (select min(rowid)
from (select UPPER(Sut_ID) Stu_ID_UP from tableName)
group by Stu_ID_UP
having count(Stu_ID_UP) > 1)
哎這惡心的排版,這網頁裡面真難調~~~