我有一个关于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中实现我的任务