SQL 服务器:生成可能的数字组合
SQL Server : generate possible combinations of numbers
我总共有 41 个数字,我正在尝试生成这些数字之间 6 位数字的可能组合,并将它们插入到 SQL 服务器中的 table。
谁能帮我做这件事?
非常感谢!
将数字存储在一个table中,并使用cross join
六次来匹配这个table。
如果数字不能重复,添加 where
子句,或 inner join
和 on
子句,如 on t3.num not in (t1.num,t2.num)
drop table #temp
GO
create table #temp (num int identity(1,1), x int)
GO
insert into #temp default values
GO 41
select
*
from #temp t1
cross join #temp t2
cross join #temp t3
-- and so on
要生成所有可能的排列(41!/(6!*(41-6)!)
不到 450 万),您可以使用
WITH Balls(N)
AS (SELECT number
FROM master..spt_values
WHERE type='P'
AND number BETWEEN 1 AND 41)
SELECT *
FROM Balls B1
JOIN Balls B2
ON B2.N > B1.N
JOIN Balls B3
ON B3.N > B2.N
JOIN Balls B4
ON B4.N > B3.N
JOIN Balls B5
ON B5.N > B4.N
JOIN Balls B6
ON B6.N > B5.N
我总共有 41 个数字,我正在尝试生成这些数字之间 6 位数字的可能组合,并将它们插入到 SQL 服务器中的 table。
谁能帮我做这件事?
非常感谢!
将数字存储在一个table中,并使用cross join
六次来匹配这个table。
如果数字不能重复,添加 where
子句,或 inner join
和 on
子句,如 on t3.num not in (t1.num,t2.num)
drop table #temp
GO
create table #temp (num int identity(1,1), x int)
GO
insert into #temp default values
GO 41
select
*
from #temp t1
cross join #temp t2
cross join #temp t3
-- and so on
要生成所有可能的排列(41!/(6!*(41-6)!)
不到 450 万),您可以使用
WITH Balls(N)
AS (SELECT number
FROM master..spt_values
WHERE type='P'
AND number BETWEEN 1 AND 41)
SELECT *
FROM Balls B1
JOIN Balls B2
ON B2.N > B1.N
JOIN Balls B3
ON B3.N > B2.N
JOIN Balls B4
ON B4.N > B3.N
JOIN Balls B5
ON B5.N > B4.N
JOIN Balls B6
ON B6.N > B5.N