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

如何用SQL实现带过滤的自交叉连接,获取无重复行组合

SQL 获取无重复的两两行组合

假设你的表名为your_table,存储标识(如A、B、C)的列名为id,可以通过自连接+条件过滤实现需求:

通用核心语句(适用于PostgreSQL、Oracle等支持||拼接的数据库)

SELECT t1.id || t2.id AS combination
FROM your_table t1
JOIN your_table t2 ON t1.id < t2.id;

不同数据库的适配写法

  • MySQL/MariaDB:使用CONCAT()函数拼接
SELECT CONCAT(t1.id, t2.id) AS combination
FROM your_table t1
JOIN your_table t2 ON t1.id < t2.id;
  • SQL Server:直接用+做字符串拼接
SELECT t1.id + t2.id AS combination
FROM your_table t1
JOIN your_table t2 ON t1.id < t2.id;

逻辑说明

  • 自连接同一个表,用t1和t2作为别名区分两个实例
  • t1.id < t2.id的条件一举两得:
    1. 排除了行与自身的连接(t1.id不会等于t2.id)
    2. 保证每对组合只出现一次(比如只会生成AB,不会出现BA)
  • 如果你的标识列不是字符串类型,需要先转换为字符串再拼接,例如PostgreSQL中:
SELECT CAST(t1.id AS VARCHAR) || CAST(t2.id AS VARCHAR) AS combination
FROM your_table t1
JOIN your_table t2 ON t1.id < t2.id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:47:04