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

SQL如何通过自连接获取表中某列的所有唯一两两组合对

解决方案

你需要的是表的自笛卡尔积,直接对表做无关联条件的自连接即可实现需求。
假设你的表名为test_tbl,第一列字段名为id,第二列字段名为category,通用SQL语句如下:

SELECT t1.id, t2.id, t1.category
FROM test_tbl t1
CROSS JOIN test_tbl t2

-- 部分不支持CROSS JOIN语法的数据库可以用如下写法,效果完全一致:
-- SELECT t1.id, t2.id, t1.category FROM test_tbl t1, test_tbl t2

输出效果

针对你给出的样例数据,执行后会返回9条全排列结果,完全匹配你给出的预期输出:

1	1	A
1	2	A
1	3	A
2	1	A
2	2	A
2	3	A
3	1	A
3	2	A
3	3	A

可选调整规则

  • 不需要id和自身的配对(即排除1 1 A、2 2 A这类结果),可以追加WHERE条件:WHERE t1.id != t2.id
  • 只需要组合不需要排列(即1 2 A和2 1 A只保留一条),可以追加WHERE条件:WHERE t1.id < t2.id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:02