当前位置:  开发笔记 > 数据库 > 正文

删除重复数据并加载到SQL Server中的另一个表中

如何解决《删除重复数据并加载到SQLServer中的另一个表中》经验,为你挑选了0个好方法。

我有一个关于SQL Server的问题.

表: emp

empid   |  name |sal
1       |  abc  |100
2       |  def  |200
3       |  test |300
2       |  har  |500
3       |  jai  |600
4       | kali  |240

这个表有基于上表的重复数据我希望从emp表中删除重复数据

并且应该将重复数据加载到empduplicate表中.

empid是独一无二的.如果empid多次显示,则该记录被视为重复.

empduplicate 结构看起来像这样:

Empid   |  name  | sal

最后删除重复数据后,我希望看到emp表中的数据如下所示:

empid  |  name  | sal 
1      |  abc   | 100
4      | kali   | 240

为了删除重复项,我尝试了这段代码:

;with duplicate as 
(
    select 
        *,
        row_number()over (partition by empid order by empid) as rn
    from emp
)
delete from duplicate 
where rn > 1

但我无法删除整个记录.

示例:empid=2具有重复数据

empid|name |sal
2    |def  |200
2    |har  |500

我需要删除整个empid=2相应的记录.empid=2有重复,需要从emp表中删除它.

并且empduplicate表需要加载重复数据,如下所示:

empid    | name   |sal
2        |def     |200
2        |har     |500
3        |test    |300
3        |jai     |600

为了插入重复数据,我试过这段代码:

insert into empduplicate 
    select 
        id, name, sal 
    from 
         emp  
    group by 
         id 
    having 
         count(*) > 1

该查询引发错误:

列'duplicate.name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

请告诉我如何编写查询以在SQL Server中实现我的任务

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有