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