gpt4 book ai didi

sql - 关于如何将数字 1 - 69 的所有可能的 5 个数字组合查询到 SQL 表中的逻辑问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:03 24 4
gpt4 key购买 nike

编辑:澄清一下,结果的顺序仅在 1、2、3、4、5 和 5、4、3、2、1 应该是同一条记录时才重要。所以我正在寻找不同的组合。

我希望构建一个 SQL 数据库,其中包含数字 1 - 69 的所有可能的 5 位数字组合,其中同一个数字不能在单个 5 位数字组合中使用两次。结果将包含 11,238,513 条记录。我在编写代码以使其与所有逻辑一起正常工作时遇到问题。我在 Excel VBA 中尝试过一个疯狂的宏,但我觉得 SQL 会更简单、更快捷。我问过类似的问题,但它也没有让我到达那里 ( How do I create a list of 5 number permutations based on a list of numbers ranging from 1-69? )。

我已经尝试了下面的变体,但我似乎无法概念化我应该如何攻击它。有帮助吗?

WITH range
AS (
SELECT num1 AS c FROM TEST1
UNION
SELECT num2 FROM TEST1
UNION
SELECT num3 FROM TEST1
UNION
SELECT num4 FROM TEST1
UNION
SELECT num5 FROM TEST1)
SELECT *
FROM range r1,range r2,range r3,range r4,range r5
where r1.c <> r2.c and r1.c<>r3.c and r1.c<>r4.c and r1.c<>r5.c
and r2.c <> r3.c and r2.c<>r4.c and r2.c<>r5.c
and r3.c<>r4.c and r3.c<>r5.c
and r4.c <> r5.c
order by r1.c, r2.c, r3.c, r4.c, r5.c

最佳答案

笛卡尔乘积表自身 5 次,并仅选择数字按升序排列的行(这确保不会多次选择相同的数字,并且相同的 5 个数字没有排列):

SELECT r1.c, r2.c, r3.c, r4.c, r5.c
FROM range r1, range r2, range r3, range r4, range r5
WHERE r1.c<r2.c AND r2.c<r3.c AND r3.c<r4.c AND r4.c<r5.c

关于sql - 关于如何将数字 1 - 69 的所有可能的 5 个数字组合查询到 SQL 表中的逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com