PostgreSQL如何无数据源编写SQL生成带行号的临时表
PostgreSQL无数据源生成连续行号临时表方案
你可以直接使用PostgreSQL内置的generate_series序列生成函数实现,不需要依赖任何已有的源表,具体实现如下:
核心SQL代码
-- 创建临时表,生成1~50的连续行号 CREATE TEMP TABLE temp_row_num AS SELECT generate_series(1, 50) AS index;
补充说明
- 临时表仅在当前数据库会话内有效,会话关闭后会自动销毁,无需额外清理
- 如果需要调整数值范围,只需修改
generate_series的起止参数即可,例如generate_series(10, 100)就会生成10到100的连续整数 - 若仅需要临时获取行号结果无需持久化存储,直接执行
SELECT generate_series(1, 50) AS index;即可拿到对应行集
注意:
index是PostgreSQL的保留关键字,如果执行时报语法错误,可以将列名改为seq、row_id等非保留字,或者用双引号包裹列名:CREATE TEMP TABLE temp_row_num AS SELECT generate_series(1, 50) AS "index";
结果验证
执行以下查询即可确认生成的数据是否符合预期:
SELECT * FROM temp_row_num;
内容的提问来源于stack exchange,提问作者Kash
相关产品推荐
相关产品推荐

