选择时如何忽略某些类似的行

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

任何回复将不胜感激.

And*_*mar 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
Run Code Online (Sandbox Code Playgroud)

子查询是必需的,因为SQL Server不允许row_number直接在where子句中.