【问题标题】:sql declare a list of integers without using loopsql声明一个整数列表而不使用循环
【发布时间】:2021-08-18 06:03:16
【问题描述】:

要在sql中声明一个整数列表,我们使用如下代码

declare @listOfIDs table (id int);
insert @listOfIDs(id) values(1),(2),(3);  

但是我想声明一个从 1 到 n 的长列表。是否可以在不使用循环的情况下在一个命令中完成?

declare @listOfIDs table (id int);
insert @listOfIDs(id) values  ????From 1 to n?????

【问题讨论】:

标签: sql list integer


【解决方案1】:

如果您使用sql-server,那么您可以使用任何表来生成连续整数(这取决于您的表中有多少行)。

许多人使用主表master.dbo.spt_values 来生成连续整数,因为它包含大约 2xxx 行。

如果您使用Cross Join,则可以生成 2xxx * 2xxx 行。例如:2000 * 2000 = 4,000,000 行。这意味着您可以生成 4,000,000 个连续整数

declare @listOfIDs table (id int);

insert @listOfIDs(id) 
SELECT Top (2000) Row_Number() Over (Order By (Select 1)) 
FROM master.dbo.spt_values AS s1
CROSS JOIN master.dbo.spt_values AS s2

select * from @listOfIDs

您可以将 Top(2000) 更改为 Top(n) 其中 n 是最大数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多