SQL server 删除重复数据的函数

这里的分享的是distinct函数

distinct 用于从查询结果中删除重复的行。它确保查询结果中的每一行都是唯一的。distinct 通常与 select 语句一起使用,可以应用于一个或多个列。

基本语法:

当想从某一列中删除重复的值时:

select distinct column1 from table

column1为列名,table为表名

当想删除多个列的重复值时:

select distinct column1,column2,column3,··· from table

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server删除重复数据通常通过聚集函数、自连接查询或使用内置的 `DISTINCT` 关键字结合 `DELETE` 或 `INSERT INTO ... SELECT DISTINCT` 来实现。以下是几种常见的方法: 1. **使用 `DISTINCT`**: 如果你想删除某个表中的所有重复行,可以先创建一个新的临时表,只包含唯一的数据,然后将这些行插入到原始表中。 ```sql INSERT INTO TableName DistinctColumn1, DistinctColumn2... SELECT DISTINCT Column1, Column2... FROM TableName; ``` 2. **使用 `DELETE` 和 `GROUP BY`**: 首先,找出重复的行,然后根据需要的唯一标识符删除非第一个出现的行。 ```sql DELETE T1 FROM TableName T1 INNER JOIN ( SELECT Column1, Column2, ROW_NUMBER() OVER(PARTITION BY Column1, Column2 ORDER BY (SELECT NULL)) AS RN FROM TableName ) T2 ON T1.Column1 = T2.Column1 AND T1.Column2 = T2.Column2 WHERE T2.RN > 1; ``` 3. **使用 `CTE`(公共表表达式)**: 可以通过递归的方式从原始表开始,逐步删除重复项。 ```sql WITH CTE recursive (ID, DupRows) AS ( SELECT ID, COUNT(*) OVER(PARTITION BY Column1, Column2) as DupRows FROM TableName UNION ALL SELECT t.ID, c.DupRows - 1 FROM TableName t JOIN CTE c ON t.Column1 = c.Column1 AND t.Column2 = c.Column2 WHERE c.DupRows > 1 ) DELETE FROM TableName WHERE ID IN (SELECT ID FROM CTE WHERE DupRows > 1); ``` 请注意,执行此类操作前务必备份数据,以防误删重要信息。同时,不同的场景可能需要调整上述示例以适应你的实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值