SqlServer没有oracle的rowid查询去重,只有distinct查询去重,但是用于删除不便。
SQLServer ROW_NUMBER()函数使用方法 分区排序
1、对数据进行分组排序后进行查询 并删除多条的重复数据
select ROW_NUMBER() over(partition by xm Order by xm ASC) As no,xm from 表
ROW_NUMBER( ) 起到了编号的功能
partition by 将相同数据进行分区
order by 使得数据按一定顺序排序
具体语句如下:
尤其在做删除操作前记得备份!!
delete from 表 where id in (
select id from (
select ROW_NUMBER() over(partition by 字段 Order by 字段 ASC) As no from 表
) a where no>1
)
可参考其他博主文章:
1、Distinct和Group by去除重复字段记录,用临时表去多个字段的重复 SQLServerhttps://www.cnblogs.com/oufeiyan100/articles/5105960.html
2、Mysql数据库中查询重复数据和去重数据 , 删除重复数据的sql及分析
https://blog.csdn.net/zzzgd_666/article/details/80718139
3、ORACLE环境下-SQL查询和删除重复值
https://segmentfault.com/a/1190000011560849
4、sql分组,排序等一些函数的用法:
https://baijiahao.baidu.com/s?id=1718309685126464462&wfr=spider&for=pc
5、sql教程: https://www.yiibai.com/sql/sql-avg.html