Aar*_*nau 3 sql sql-server sql-server-2008
我有下表
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
Run Code Online (Sandbox Code Playgroud)
如您所见,id列中有重复值,2和4.我只想选择具有唯一id值的行,并忽略具有重复id值的以下行.我只想保留第一行的重复值
1 c 2 m
2 c 3 6
3 e 6 9
4 1 v 8
Run Code Online (Sandbox Code Playgroud)
有FK约束,所以我无法删除具有重复值的行.
我正在使用SQL SERVER 2008 R2
任何回复将不胜感激.
您可以使用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
Run Code Online (Sandbox Code Playgroud)
子查询是必需的,因为SQL Server不允许row_number直接在where子句中.