sql - 选择时如何忽略某些相似的行

标签 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

如您所见,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/

相关文章:

sql - 使用左连接选择一对多关系中的第一条记录

sql - 列的创建和使用

sql - 使用 case 表达式 sql 更新列

sql - 在存储过程中执行存储过程

c# - 如何通过 C# 检索所有可能的服务器名称

sql - 使用 SSMS 将 1000 行插入 SQL 表

c# - LINQ to SQL : Invalid column name 'DepartureGate' , 即使该列存在

mysql - 如何计算MySQL中每个组的运行总和

sql - 如何在父/子对中区分父表和子表?

MYSQL 已将一列设置为非空,但它仍然接受空值