TSQL仅删除某些列上的重复行
可能重复: 示例这是我的表格: SiteKey、名称、城市 SiteKey是自动递增的,名称不同,但有时2个SiteKey将具有相同的城市 例如:TSQL仅删除某些列上的重复行,sql,tsql,Sql,Tsql,可能重复: 示例这是我的表格: SiteKey、名称、城市 SiteKey是自动递增的,名称不同,但有时2个SiteKey将具有相同的城市 例如: 1, A , CityA 2, B, CityB 3, C, CityA 4, D, CityF 所以我需要删除第3行,只保留第1、2、4行 它是基于SQL 2005和更高版本的 谢谢您的帮助。这是标准SQL DELETE mytable WHERE SiteKey NOT IN ( SELECT
1, A , CityA
2, B, CityB
3, C, CityA
4, D, CityF
所以我需要删除第3行,只保留第1、2、4行
它是基于SQL 2005和更高版本的
谢谢您的帮助。这是标准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)
这里有两种方法可以做到这一点
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
这里有一个链接,可以回答您的问题:在SQL 2005查询中,标准SQL不适用于我。@Ken Le:不适用?它是如何工作的…nvm,但我尝试使用左外连接和删除列have null,它的工作。。。谢谢你的帮助tpp,gbn。祝您有愉快的一天。@gbn-它不起作用,因为您在WHERE中命名了子查询-只需删除“KeepMe”,它就可以正常工作了。否则,该解决方案很好,对于唯一约束,无论如何为+1:-