You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数字列表转为单列网格?求UNION ALL之外的其他方法

将数字列表转为单列网格的替代方法

除了UNION ALL,根据你使用的数据库类型,还有这些常用实现方式:

1. 递归CTE(通用SQL语法)

递归公共表表达式可以生成连续或指定的数字序列,适合不需要提前创建辅助表的场景:

WITH RECURSIVE nums AS (
    SELECT 1 AS num
    UNION ALL
    SELECT num + 1 FROM nums WHERE num < 4 -- 这里4是你需要的最大数字,可按需替换
)
SELECT num FROM nums;

2. 数据库内置生成函数

不同数据库有专门的序列生成函数,写法更简洁:

  • PostgreSQL:
SELECT generate_series(1, 4) AS num;
  • MySQL 8.0+:
SELECT num FROM (SELECT 1 + ROW_NUMBER() OVER () AS num FROM INFORMATION_SCHEMA.COLUMNS LIMIT 4) t;
  • SQL Server:
SELECT TOP 4 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS num FROM sys.all_columns;

3. 数字辅助表(适合频繁使用的场景)

如果需要反复生成数字序列,建议提前创建一个持久化的数字辅助表:

-- 先创建表并插入数据
CREATE TABLE numbers (num INT PRIMARY KEY);
INSERT INTO numbers VALUES (1), (2), (3), (4); -- 可批量插入更多数值

-- 使用时直接查询
SELECT num FROM numbers WHERE num <= 4;

4. 表值构造函数(部分数据库支持)

SQL Server、PostgreSQL等支持用VALUES子句直接构造单列结果:

SELECT num FROM (VALUES (1), (2), (3), (4)) AS t(num);

内容的提问来源于stack exchange,提问作者MHD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:01:25