sqlsever 删除重复项
时间: 2024-12-23 19:24:44 浏览: 5
在SQL Server中删除重复项通常涉及使用`DISTINCT`关键字、`GROUP BY`语句结合`HAVING COUNT(*) > 1`条件,或者是使用`UNION ALL`合并结果并去除重复,然后通过`DELETE`语句从原始表中删除多余的行。以下是几种常见的方法:
1. 使用`DISTINCT`和`INSERT INTO`:
```sql
INSERT INTO table_name (column1, column2, ...)
SELECT DISTINCT column1, column2, ...
FROM table_name
```
2. 使用`GROUP BY`和`HAVING`:
```sql
DELETE t1
FROM table_name t1
INNER JOIN table_name t2 ON t1.column1 = t2.column1 AND t1.column2 = t2.column2
WHERE t2.id > t1.id;
```
这里假设id列是唯一的,并且你想保留每个组的第一个记录。
3. 使用`UNION ALL`和`ROW_NUMBER()`窗口函数:
```sql
WITH cte AS (
SELECT *, ROW_NUMBER() OVER(PARTITION BY column1, column2 ORDER BY (SELECT NULL)) as rn
FROM table_name
)
DELETE FROM cte
WHERE rn > 1;
```
`ROW_NUMBER()`会为每组分配一个连续的数字,你可以选择只删除那些rn大于1的行。
阅读全文