SQL查询 - 有没有办法提升具有相同值的id号?

时间:2017-01-07 13:40:30

标签: sql

我想知道如果id号具有相同的值,是否有重复提升的方法?

细节:

假设我有一个像这样的id值:

|-----|
| id  |
|-----|
|  1  |
|  1  |
|  2  |
|  3  |
|  3  |
|  4  |
|  5  |
|  2  |
|  4  |
|  5  |
|-----|

然后我想像这样提升那个id:

|-----|
| id  |
|-----|
|  1  |
|  2  |
|  3  |
|  4  |
|  5  |
|  1  |
|  2  |
|  3  |
|  4  |
|  5  |
|-----|

我不知道怎么说,也不知道keyword在Google上找到它,所以我希望我的问题对每个人都有用,以防出现同样的问题。

1 个答案:

答案 0 :(得分:2)

在ANSI标准SQL中,您可以使用row_number()来实现此目的:

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

老实说,子查询不是必需的,所以你可以这样做:

select id
from t
order by row_number() over (partition by id order by id), id;