示例这是我的表:
SiteKey,名称,城市
SiteKey是自动增量,名称不同,但有时2个Sitekey将具有相同的城市。
示例:
1, A , CityA
2, B, CityB
3, C, CityA
4, D, CityF
所以我需要删除第3行,并且只保留1,2,4行。
它在SQL 2005及以上版本。
感谢你的帮助。
答案 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)