我有下表
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
如有任何回复,我们将不胜感激。
最佳答案
您可以使用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 不允许 where
子句中直接使用 row_number
。
关于sql - 选择时如何忽略某些相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6908589/