我有下表,我已经非常简单了,因为我不知道如何将其格式化为此处的表格(旁注如果有人可以将我链接到一个简单的教程,我会永远感谢)。
id
1
1
1
2
2
2
我想添加另一个列,该列仅在不同的ID上增加数量,因此结果应为
Id
1
1
1
2
2
2
rowNum
1
1
1
2
2
2
目前我所能得到的只有:
id
1
1
1
2
2
2
rowNum
1
2
3
4
5
6
我在这里遗漏了一些非常简单的东西,因为我确信我应该能够使用row_number或rank和一个窗口函数来解决这个问题,但我无法理解。
答案 0 :(得分:2)
答案 1 :(得分:1)
您也可以使用子查询自联接来执行此操作。
mysql> select id,
> (select count(distinct id)
> from
> testtest b
> where b.id < a.id)
> from testtest a;
+------+---------------------------------------------------------------+
| id | (select count(distinct id) from testtest b where b.id < a.id) |
+------+---------------------------------------------------------------+
| 1 | 0 |
| 1 | 0 |
| 1 | 0 |
| 2 | 1 |
| 2 | 1 |
| 2 | 1 |
+------+---------------------------------------------------------------+
6 rows in set (0.01 sec)
还有一种方法:
select a.id, b.idRank
from testtest a,
(
select id,
rank() over
(order by id) as idRank
from (
select distinct id
from testtest
) testtest2
) b
where a.id = b.id