SQL-仅在一列上选择不同的

标签 sql sql-server unique distinct

我已经广泛地寻找这个问题的答案。我正在使用 Microsoft SQL Server,假设我有一个如下所示的表:

+--------+---------+-------------+-------------+
| ID     | NUMBER  | COUNTRY     | LANG        |
+--------+---------+-------------+-------------+
| 1      | 3968    | UK          | English     |
| 2      | 3968    | Spain       | Spanish     |
| 3      | 3968    | USA         | English     |
| 4      | 1234    | Greece      | Greek       |
| 5      | 1234    | Italy       | Italian     |

我想执行一个查询,该查询仅选择唯一的“NUMBER”列(无论是第一行还是最后一行都不会打扰我)。所以这会给我:

+--------+---------+-------------+-------------+
| ID     | NUMBER  | COUNTRY     | LANG        |
+--------+---------+-------------+-------------+
| 1      | 3968    | UK          | English     |
| 4      | 1234    | Greece      | Greek       |

如何实现这一目标?

最佳答案

解决此类问题的一个非常典型的方法是使用 row_number() :

select t.*
from (select t.*,
             row_number() over (partition by number order by id) as seqnum
      from t
     ) t
where seqnum = 1;

这比使用与最小 id 的比较更通用。例如,您可以使用 order by newid() 获得随机行。您可以使用 where seqnum <= 2 选择 2 行.

关于SQL-仅在一列上选择不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406069/

相关文章:

excel - 如何根据另一列中的最新唯一日期获取单元格的值?

R:在数据框的列中提取唯一值

SQL Server面试查询索引?

sql - Wordpress 数据库输出 - 删除 SQL 注入(inject)转义

SQL HASHBYTES 函数在 CASE WHEN/IIF 中使用时返回奇怪的输出

sql - 如何使用 ActiveRecord 和 Postgresql 按列选择唯一记录

找不到 C# SqlConnection

mysql - Visual Basic : DataTable. 搜索过滤器参数

sql - Azure数据工厂说临时表是 "Invalid object name"?

返回 R 中 sf 对象的完整案例