58 lines
989 B
Markdown
Executable File
58 lines
989 B
Markdown
Executable File
# 数据去重方法
|
||
|
||
> SQL Server 数据去重常用方法
|
||
|
||
## 方法一:使用 DISTINCT
|
||
|
||
```sql
|
||
SELECT DISTINCT * FROM TableName
|
||
```
|
||
|
||
## 方法二:临时表去重
|
||
|
||
```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
|
||
```
|
||
|
||
---
|
||
|
||
> ⚠️ 执行删除前请先备份数据!
|