Update from Sync Service
This commit is contained in:
64
数据库/去重.md
64
数据库/去重.md
@@ -1,15 +1,57 @@
|
||||
begin tran
|
||||
# 数据去重方法
|
||||
|
||||
> SQL Server 数据去重常用方法
|
||||
|
||||
## 方法一:使用 DISTINCT
|
||||
|
||||
```sql
|
||||
select distinct * into #temp from DataSyncStationSX
|
||||
delete DataSyncStationSX
|
||||
go
|
||||
insert DataSyncStationSX select * from #temp Sqlclub
|
||||
go
|
||||
drop table #temp
|
||||
|
||||
select * from DataSyncStationSX
|
||||
SELECT DISTINCT * FROM TableName
|
||||
```
|
||||
order by sid
|
||||
|
||||
commit
|
||||
## 方法二:临时表去重
|
||||
|
||||
```sql
|
||||
BEGIN TRAN
|
||||
|
||||
-- 1. 选中不重复的数据到临时表
|
||||
SELECT DISTINCT * INTO #temp FROM DataSyncStationSX
|
||||
|
||||
-- 2. 删除原表数据
|
||||
DELETE FROM DataSyncStationSX
|
||||
|
||||
-- 3. 从临时表导回
|
||||
INSERT INTO DataSyncStationSX SELECT * FROM #temp
|
||||
|
||||
-- 4. 删除临时表
|
||||
DROP TABLE #temp
|
||||
|
||||
COMMIT
|
||||
```
|
||||
|
||||
## 方法三:ROW_NUMBER 去重
|
||||
|
||||
```sql
|
||||
-- 删除重复数据,保留最新一条
|
||||
DELETE FROM TableName
|
||||
WHERE ID IN (
|
||||
SELECT ID FROM (
|
||||
SELECT ID, ROW_NUMBER() OVER (PARTITION BY duplicate_column ORDER BY created_time DESC) AS rn
|
||||
FROM TableName
|
||||
) t
|
||||
WHERE rn > 1
|
||||
)
|
||||
```
|
||||
|
||||
## 方法四:查找重复数据
|
||||
|
||||
```sql
|
||||
-- 查找重复记录
|
||||
SELECT column1, column2, COUNT(*) as cnt
|
||||
FROM TableName
|
||||
GROUP BY column1, column2
|
||||
HAVING COUNT(*) > 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> ⚠️ 执行删除前请先备份数据!
|
||||
|
||||
Reference in New Issue
Block a user