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

SQL中如何从3个CHAR变量列表中获取全部两两组合

SQL获取三个变量所有有序两两配对的实现方法

实现逻辑

你需要的是3个元素中取2个的有序不重复排列,SQL中可以通过自笛卡尔连接+等值过滤实现:

  • 第一步先将A、B、C三个变量构造为可查询的多行数据集
  • 对数据集做自连接,排除两个元素相等的场景,即可得到所有符合要求的配对

通用SQL写法(兼容绝大多数SQL方言)

-- 先构造存储三个变量的临时结果集
WITH value_list AS (
    SELECT 'A' AS item
    UNION ALL
    SELECT 'B' AS item
    UNION ALL
    SELECT 'C' AS item
)
-- 自连接过滤得到有序配对
SELECT 
    CONCAT(t1.item, ',', t2.item) AS pair
FROM value_list t1
CROSS JOIN value_list t2
WHERE t1.item <> t2.item;

输出结果

执行上述代码后会返回6条结果,完全覆盖你提到的所有场景:

A,B
A,C
B,A
B,C
C,A
C,B

可选调整

如果你需要的是无序两两组合(即A,B和B,A视为同一种仅保留一条),仅需要修改WHERE条件即可:

WHERE t1.item < t2.item

修改后会返回3条结果:A,B、A,C、B,C。

简化写法(适用于PostgreSQL/MySQL 8.0+/Oracle等支持VALUES行构造的数据库)

不需要写CTE,直接用VALUES构造数据集即可:

SELECT CONCAT(t1.item, ',', t2.item) AS pair
FROM (VALUES ('A'), ('B'), ('C')) t1(item)
JOIN (VALUES ('A'), ('B'), ('C')) t2(item)
ON t1.item <> t2.item;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:04