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

SQL Server技术问询:不使用UNION实现同效单列表生成方法

不用UNION生成指定结果集的SQL Server方法

当然可以!在SQL Server里,不用UNION也能轻松生成包含1、2、3的单列表,给你分享几个实用的方法:

  • VALUES子句(最简洁直观)
    这是构造固定行集最直接的方式,语法简洁可读性强:

    SELECT value FROM (VALUES (1), (2), (3)) AS nums(value);
    

    这里VALUES直接定义了三行数据,通过子查询给列命名后就能直接查询。

  • 递归CTE(适合生成连续数字范围)
    如果需要的是连续的数字序列(比如从1到N),递归CTE非常灵活,哪怕后续要扩展到更多数字也很方便:

    WITH RecursiveNums AS (
        SELECT 1 AS num
        UNION ALL
        SELECT num + 1 FROM RecursiveNums WHERE num < 3
    )
    SELECT num FROM RecursiveNums;
    

    这个CTE从初始值1开始,每次递归把数字加1,直到达到3为止。

  • 利用系统表+ROW_NUMBER()
    SQL Server自带一些包含大量行数据的系统表,比如master.dbo.spt_values,结合ROW_NUMBER()函数可以快速生成序号:

    SELECT TOP 3 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS num
    FROM master.dbo.spt_values;
    

    ORDER BY (SELECT NULL)是为了避免不必要的排序开销,确保高效生成序号。

如果只是需要固定的几个值,优先选VALUES子句;要是需要生成一段连续数字范围,递归CTE或者系统表的方法会更实用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:46