从SQL Server 2008中的数据库中删除重复的条目

时间:2013-09-02 10:50:46

标签: sql sql-server sql-server-2008

我正在使用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行中的数据是相同的,现在我想要的是只保留一个条目并删除所有其他存在的重复记录,我应该提到的一件事是我的数据已插入数据库而且我有删除重复的数据。请指导我有什么解决方案。

2 个答案:

答案 0 :(得分: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

查询费用 -

enter image description here

输出 -

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

答案 1 :(得分:7)

delete from emps
where id not in
(
  select min(id) from emps
  group by name, title
)