如何为SQL查询结果添加自增连续序号列
可以实现,以下是不同数据库场景下的具体实现方案:
- 支持窗口函数的主流数据库(MySQL 8.0+、PostgreSQL、SQL Server、SQLite 3.25.0+等)
直接使用ROW_NUMBER()窗口函数即可,示例代码如下:
SELECT ROW_NUMBER() OVER (ORDER BY name) AS serial_num, name FROM animal;
如果不需要指定排序规则,把OVER子句里的ORDER BY name替换为ORDER BY (SELECT 1)也可以正常生成序号。
如果要直接得到你给出的逗号拼接格式的输出,可以拼接两个字段:
SELECT CONCAT(ROW_NUMBER() OVER (ORDER BY name), ',', name) AS output_line FROM animal;
- 不支持窗口函数的旧版本MySQL
可以通过自定义用户变量实现:
SET @num := 0; SELECT (@num := @num + 1) AS serial_num, name FROM animal;
- Oracle 数据库
可以直接使用内置的ROWNUM伪列实现:
SELECT ROWNUM AS serial_num, name FROM animal ORDER BY name;
内容的提问来源于stack exchange,提问作者TomuRain
相关产品推荐
相关产品推荐

