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

如何在MS SQL Server中用单条通用语句插入指定行数的数据?

在SQL Server中快速插入指定行数数据的单条语句方案

嘿,刚好能帮到你!在SQL Server里,你可以用单条语句实现类似Oracle那种插入指定行数数据的需求,下面给你两种实用的方案,都能精准控制插入的记录数量:

方案一:递归CTE(类似Oracle的CONNECT BY逻辑)

这种方法逻辑上和你在Oracle里用的CONNECT BY LEVEL最接近,通过递归公共表表达式生成连续的行,再插入目标表:

INSERT INTO YourTableName (YourColumnName)
WITH RecursiveCTE AS (
    SELECT 1 AS Num
    UNION ALL
    SELECT Num + 1 FROM RecursiveCTE WHERE Num < 100000
)
SELECT RAND() -- 这里替换成你要插入的字段值,比如随机值或者固定值
FROM RecursiveCTE
OPTION (MAXRECURSION 0); -- 必须加这个,否则递归默认最多100层

说明:

  • 把YourTableName和YourColumnName换成你的表和字段
  • 修改Num < 100000里的数字就能控制插入行数(这里是10万行)
  • RAND()可以换成你需要的任意值,比如NEWID()生成唯一标识符,或者固定字符串/数字

方案二:利用系统视图生成大量行(性能更优)

如果插入的行数很多(比如10万+),递归CTE的性能可能不如直接利用系统表来生成数据,因为系统表本身有现成的行,交叉连接后用TOP来限制数量:

INSERT INTO YourTableName (YourColumnName)
SELECT TOP 100000 RAND(CHECKSUM(NEWID())) -- 生成不同的随机值
FROM sys.all_columns c1
CROSS JOIN sys.all_columns c2;

说明:

  • TOP 100000直接控制要插入的行数
  • sys.all_columns是SQL Server自带的系统视图,本身有几千行,交叉连接后能轻松生成百万级别的行,足够满足10万行的需求
  • RAND(CHECKSUM(NEWID()))是为了生成每行不同的随机值,如果不需要随机,直接写固定值就行

如果你的目标表有多个字段,只要在SELECT里对应添加字段值即可,两种方案都支持单条语句完成操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:41:34