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

SQL如何按col1分组获取col2与非自身值的唯一组合

解决方案

核心逻辑

你之前自连接出现重复的核心原因是用了col2 != col2的双向不等条件,会同时生成(a,b)和(b,a)两条重复组合。改用单向不等比较即可解决:

  • 第一步先对原表按col1、col2去重,避免同组重复值生成冗余组合
  • 对去重后的结果做自连接,连接条件限定同col1分组、左表col2大于右表col2,既排除自身配对,也保证每对组合仅返回一次
  • 自动过滤掉仅含1个唯一col2值的分组(比如示例中col1=2的分组)

通用SQL实现(支持所有关系型数据库)

WITH distinct_col AS (
    -- 先取每个分组下的唯一col2值
    SELECT DISTINCT col1, col2 FROM 你的表名
)
SELECT 
    t1.col1,
    t1.col2,
    t2.col2 AS col2_combo
FROM distinct_col t1
INNER JOIN distinct_col t2
    ON t1.col1 = t2.col1 
    AND t1.col2 > t2.col2 -- 核心条件:单向不等避免重复组合
-- 加上排序可以和你给出的期望输出顺序完全匹配
ORDER BY t1.col1, t1.col2 DESC, t2.col2 DESC;

如果需要调整组合的前后顺序(比如让更小的值放在col2列),只需要把连接条件改成t1.col2 < t2.col2即可,不影响组合的唯一性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:01