刪除重複資料的三種sql寫法
問題:一個表有自增的ID列,表中有一些記錄內容重複,也就是說這些記錄除了ID不同之外,其他的資訊都相同。需要把重複的記錄保留一條,剩下的刪除
方法一:還是2000年的時候一位Oracle DBA叫羅敏發給技術部全體的(可惜原始郵件找不到了,要不然我當文物發給大家):
delete from temp
where id not in (
select min(id)
from temp
group by column1,column2,...,columnn)
個人感覺這個方法思路比較清晰。不過效率相對來說不高。
delete from temp
where id not in (
select min(id)
from temp
group by column1,column2,...,columnn)
個人感覺這個方法思路比較清晰。不過效率相對來說不高。
方法二:趙賁在網路上搜出來的:
--刪除相同城市下的相同行政區
delete a from area a where a.id>(select min(id) from area b where a.area_id=b.area_id and a.city_id=b.city_id)
方法三:使用sql 2005新增的row_number()功能和with關鍵字,我是從趙立東那裡學來的。
--刪除相同城市下的相同行政區
delete a from area a where a.id>(select min(id) from area b where a.area_id=b.area_id and a.city_id=b.city_id)
方法三:使用sql 2005新增的row_number()功能和with關鍵字,我是從趙立東那裡學來的。
print('刪除PriceInfo表中重複的記錄')
;WITH a AS (
SELECT ROW_NUMBER()OVER (PARTITION BY hotel_id,room_type_id,start_date,end_date
ORDER BY hotel_id,room_type_id,start_date,end_date) AS rn ,*
FROM hotel_price
)
delete from a WHERE a.rn>1
;WITH a AS (
SELECT ROW_NUMBER()OVER (PARTITION BY hotel_id,room_type_id,start_date,end_date
ORDER BY hotel_id,room_type_id,start_date,end_date) AS rn ,*
FROM hotel_price
)
delete from a WHERE a.rn>1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-621848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- T-SQL 刪除重複資料SQLSQL
- Oracle中刪除重複資料的SqlOracleSQL
- oracle 刪除重複資料的幾種方法Oracle
- MS SQL Server 刪除重複行資料SQLServer
- 刪除重複資料的一種高效的方法
- 刪除重複資料
- mongodb刪除重複資料MongoDB
- MySQL刪除重複資料MySql
- SQL Server中刪除重複資料的幾個方法SQLServer
- 利用sql語句找出表中有重複記錄的三種sql寫法SQL
- SQL刪除重複資料,只保留一行SQL
- T-SQL技術收集——刪除重複資料SQL
- 刪除表裡重複資料
- sqlserver中刪除重複資料SQLServer
- mysql 刪除表中重複的資料MySql
- 用SQL語句刪除重複記錄的四種方法SQL
- MySQL刪除表重複記錄的三種方法舉例MySql
- 三種方法刪除列表中重複的元素及效率分析!
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- Mongodb 刪除重複資料的幾個方法MongoDB
- oracle重複資料的查詢及刪除Oracle
- 刪除重複資料的幾個方法(轉)
- Oracle查詢重複資料與刪除重複記錄Oracle
- 海量資料處理_刪除重複行
- 根據rowid刪除重複資料
- 通過ROWID刪除重複資料
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- NetApp FAS Filer的重複資料刪除APP
- 重複資料刪除和SSD的互補方法
- ORACLE批量刪除無主鍵重複資料Oracle
- Python 字串,list排序,刪除重複資料Python字串排序
- Oracle 刪除重複資料只留一條Oracle
- 重複資料刪除:備份中的“消重加速器”
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- Oracle 刪除表中重複記錄的DELETE SQLOracledeleteSQL