SQL重复查询

表格如下:

id  name
1   tom
2   bob
3   tom
4   tom
5   harry

我正在寻找一个导致以下结果的查询:

id    name    duplicateposition
1     tom     1
2     bob     1
3     tom     2
4     tom     3
5     harry   1

因此第一个tom的重复位置是1,第二个tom是2,第三个tom是3.第一个bob是1,第一个tom是1.是否有一个简单的查询来执行此操作?

这是我的尝试:

SELECT id, name, count(id) from table

我对sql有点新意,所以这是我最好的镜头.

最佳答案 您可以执行以下操作.它按名称对数据进行分区,并在分区中分配一个数字.忘记提到我在SQL Server 2012中这样做了.

select *, 
  row_number() over (partition by name order by id) as DuplicatePosition
from test
order by id

SQL Fiddle Demo

点赞