1

我使用的是 SQL Server 2008R2,我有下表命名为 Emps

ID      Name      Title   
 1      XYZ       Manager
 2      ABC       CEO
 3      LMP       Clerk
 4      XYZ       Manager
 5      XYZ       Manager

第 1,4 行和第 5 行中的数据是相同的,现在我想要的是只保留一个条目并删除所有其他存在的重复记录,我应该提到的一件事是我的数据已经插入到数据库中,我必须删除重复数据。请指导我是否有任何解决方案。

4

2 回答 2

8

试试这个——

DECLARE @temp TABLE
(
      ID INT IDENTITY(1,1)
    , Name VARCHAR(10)
    , Title VARCHAR(10)
)

INSERT INTO @temp (Name, Title)
VALUES 
    ('XYZ', 'Manager'),
    ('ABC', 'CEO'),
    ('LMP', 'Clerk'),
    ('XYZ', 'Manager'),
    ('XYZ', 'Manager')

DELETE FROM t
FROM (
    SELECT 
          Name
        , Title
        , rn = ROW_NUMBER() OVER (PARTITION BY Name, Title ORDER BY 1/0) 
    FROM @temp
) t
WHERE rn > 1

SELECT * 
FROM @temp

查询费用 -

在此处输入图像描述

输出 -

ID          Name       Title
----------- ---------- ----------
2           ABC        CEO
3           LMP        Clerk
4           XYZ        Manager
于 2013-09-02T10:56:18.873 回答
7
delete from emps
where id not in
(
  select min(id) from emps
  group by name, title
)
于 2013-09-02T10:52:02.533 回答