SQL 排序并插入到每行位置编号

发布于 2024-11-04 20:06:48 字数 217 浏览 1 评论 0原文

是否可以使用 order by 选择查询,结果插入包含每行位置的新列?

例如我有表:

Name
-------
A
D
D
B
C
B

因此我想要表:

Name Position
-------------
A 1
D 4
D 4
B 2
B 2
C 3

感谢您的帮助

Is it possible to have select query with order by and as a result insert new column with position of each row ?

for example I have table:

Name
-------
A
D
D
B
C
B

and as a result I would like to have table:

Name Position
-------------
A 1
D 4
D 4
B 2
B 2
C 3

thanks for any help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅冕 2024-11-11 20:06:48

使用 DENSE_RANK

SELECT Name ,
    DENSE_RANK() OVER (ORDER BY Name) AS 'Position'
    FROM Table

这会产生

Name Position
-------------
A   1
B   2
B   2
C   3
D   4
D   4

,因此可能很难维持原始排序

Use DENSE_RANK

SELECT Name ,
    DENSE_RANK() OVER (ORDER BY Name) AS 'Position'
    FROM Table

This will produce

Name Position
-------------
A   1
B   2
B   2
C   3
D   4
D   4

so it may be difficult to maintain the original ordering

迷离° 2024-11-11 20:06:48

使用行号

SELECT name,ROW_NUMBER() OVER(ORDER BY name) as Position
 FROM YourTable

use row_number

SELECT name,ROW_NUMBER() OVER(ORDER BY name) as Position
 FROM YourTable
孤君无依 2024-11-11 20:06:48
SELECT 
    Name, 
    ROW_NUMBER() OVER(ORDER BY Name) AS POSITION 
FROM Table_1
SELECT 
    Name, 
    ROW_NUMBER() OVER(ORDER BY Name) AS POSITION 
FROM Table_1
源来凯始玺欢你 2024-11-11 20:06:48
SELECT Name, DENSE_RANK() OVER (ORDER BY Name) AS 'Position' 
FROM Table
SELECT Name, DENSE_RANK() OVER (ORDER BY Name) AS 'Position' 
FROM Table
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文