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

如何在MsSql中获取n个列表的所有可能组合?

嘿,这问题我熟!要生成这三个列表的所有可能组合,在MS SQL里用笛卡尔积就可以完美解决——也就是用CROSS JOIN把每个列表的所有元素两两配对,自动生成全量组合。

先给你直接能用的SQL代码,我们可以用VALUES子句把你的三个列表直接定义成临时数据集,然后交叉连接它们:

-- 生成所有8种组合,包含序号和拼接后的格式
SELECT 
    ROW_NUMBER() OVER (ORDER BY l1.item, l2.item, l3.item) AS Combination_Number,
    CONCAT(l1.item, ' ', l2.item, ' ', l3.item) AS Combination
FROM 
    (VALUES ('A'), ('B')) AS l1(item)
CROSS JOIN 
    (VALUES ('C'), ('D')) AS l2(item)
CROSS JOIN 
    (VALUES ('E'), ('F')) AS l3(item);

执行这个查询后,输出会完全匹配你想要的结果:

  • 序号从1到8,和你列的(1)到(8)一一对应
  • 每个组合的格式就是你预期的A C E、A C F这类字符串

如果需要单独获取每个列表的元素(而不是拼接后的字符串),可以把SELECT部分改成:

SELECT 
    ROW_NUMBER() OVER (ORDER BY l1.item, l2.item, l3.item) AS Combination_Number,
    l1.item AS List1_Item,
    l2.item AS List2_Item,
    l3.item AS List3_Item

原理很简单:CROSS JOIN会把第一个列表的每一行,和第二个列表的所有行配对,再把这些配对结果和第三个列表的所有行配对,刚好就是2×2×2=8种组合,完全覆盖所有可能性。

内容的提问来源于stack exchange,提问作者Harshad Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:26:42