我有下表
Id col1 col2 col3
1 c 2 m
2 c 3 6
2 b d u
3 e 6 9
4 1 v 8
4 2 b t
4 4 5 g
正如您所看到的,id列,2和4中存在重复值。我只想选择具有唯一id值的行,并忽略具有重复id值的以下行。我只想保留第一行的重复值
1 c 2 m
2 c 3 6
3 e 6 9
4 1 v 8
有FK约束,因此我无法删除具有重复值的行。
我正在使用SQL SERVER 2008 R2
任何回复都将不胜感激。
答案 0 :(得分:7)
您可以使用row_number
为具有相同id
的每一行编号。然后,您只能选择每id
的第一行:
select *
from (
select row_number() over (partition by id order by col1, col2, col3) rn
from YourTable
) as SubQueryAlias
where rn = 1
子查询是必需的,因为SQL Server不允许在row_number
子句中直接使用where
。