SQL在查询结果中输出行号

mad*_*ulf 23 sql sql-server sql-server-2005

我想为sql查询的结果中的每一行生成一个行号.怎么可能这样做?

示例:在请求中

select distinct client_name from deliveries
Run Code Online (Sandbox Code Playgroud)

我想添加一个显示行号的列

我正在使用sql server 2005.

Roe*_*ler 36

这取决于您使用的数据库.一个适用于SQL Server,Oracle和MySQL的选项:

SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable
Run Code Online (Sandbox Code Playgroud)

更改SomeField和SomeTable是根据您的特定表和相关字段来排序的.当然,SomeField最好在查询的上下文中是唯一的.

在您的情况下,查询将如下(Faiz首先制作这样的查询):

SELECT ROW_NUMBER() OVER (ORDER BY client_name) AS row_number, client_name
FROM (SELECT DISTINCT client_name FROM deliveries) TempTable
Run Code Online (Sandbox Code Playgroud)

我认为这对SQLite不起作用(如果有人能在这里纠正我,我将不胜感激),我不确定那里有什么替代品.

  • 对于sql server 2005,这将是首选选项 (4认同)