刪除重複資料的三種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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MS SQL Server 刪除重複行資料SQLServer
- 刪除重複資料
- mongodb刪除重複資料MongoDB
- sqlserver中刪除重複資料SQLServer
- mysql 刪除表中重複的資料MySql
- 解析postgresql 刪除重複資料案例SQL
- PostgreSQL刪除表中重複資料SQL
- Oracle中刪除表中的重複資料Oracle
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- ORACLE批量刪除無主鍵重複資料Oracle
- sql刪除重複記錄只保留一條SQL
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- VSCode刪除重複的空行VSCode
- 事件溯源投影模式:重複資料刪除策略 - domaincentric事件模式AI
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- mysql 刪除重複項MySql
- 刪除oracle重複值Oracle
- JavaScript 刪除重複字元JavaScript字元
- 刪除重複id的記錄
- oracle刪除重資料方法Oracle
- JavaScript 刪除字串重複字元JavaScript字串字元
- SQL Server無法刪除資料庫 "xxx",因為該資料庫當前正在使用(如何刪除一個Sql Server資料庫)SQLServer資料庫
- JavaScript陣列刪除重複元素JavaScript陣列
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript刪除字串中重複字元JavaScript字串字元
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- 刪除排序陣列中的重複項排序陣列
- MongoDB中優雅刪除大量資料的三種方式純尹MongoDB
- sql 多表關聯刪除表資料SQL
- JavaScript陣列刪除重複內容JavaScript陣列
- C# 批次刪除Excel中的重複行C#Excel
- ES6刪除字串中重複的元素字串
- 刪除有序陣列中的重複項 II陣列
- 刪除字串中的所有相鄰重複項字串
- sql server如何刪除前1000行資料SQLServer
- SQL的資料庫操作:新增、更新、刪除、查詢SQL資料庫
- whk我【資料刪除】你個【資料刪除】的
- SQL Server實戰二:建立、修改、複製、刪除資料庫表並加以資料處理SQLServer資料庫