TSQL仅删除某些列上的重复行

时间:2011-07-21 16:45:45

标签: sql tsql

  

可能重复:
  SQL - How can I remove duplicate rows?

示例这是我的表:

SiteKey,名称,城市

SiteKey是自动增量,名称不同,但有时2个Sitekey将具有相同的城市。

示例:

1, A , CityA
2, B,  CityB
3, C,  CityA
4, D,  CityF

所以我需要删除第3行,并且只保留1,2,4行。

它在SQL 2005及以上版本。

感谢你的帮助。

2 个答案:

答案 0 :(得分:13)

以下是两种方法。

DELETE t
FROM 
<table> t
WHERE EXISTS 
    (SELECT 1 FROM <table> 
    WHERE t.SiteKey > SiteKey AND t.City = City)


DELETE t
FROM 
<table> t
INNER JOIN <table> t2
ON  t.City = t2.City
AND t.SiteKey > SiteKey

答案 1 :(得分:4)

这是标准的SQL

DELETE
   mytable
WHERE
    SiteKey NOT IN 
    (
    SELECT
       MIN(SiteKey)
    FROM
       Mytable
    GROUP BY
       City
    ) --Don't need 'KeepMe'

然后,添加一个唯一约束

ALTER TABLE MyTable WITH CHECK ADD
   CONSTRAINT UQ_MyTable_City UNIQUE (City)