如何用SQL查询单表单列所有无逆序重复的两两组合(含自配对)
解决方案
你可以通过Fruits表自连接配合ID比较的过滤规则实现需求,最终查询语句如下:
SELECT f1.Name AS Fruit1, f2.Name AS Fruit2 FROM Fruits f1 JOIN Fruits f2 ON f1.ID <= f2.ID ORDER BY f1.ID, f2.ID
逻辑说明
- 对Fruits表取两个别名
f1、f2做自连接,先生成所有两两组合的笛卡尔积 - 连接条件
f1.ID <= f2.ID同时满足两个要求:- 当两个ID相等时,返回水果和自身配对的结果(比如Apple, Apple、Peach, Peach)
- 当
f1.ID < f2.ID时,只会返回ID从小到大对应的水果组合,天然排除逆序重复的情况,不会同时出现Apple,Banana和Banana,Apple
- 末尾的
ORDER BY子句可以让输出顺序和你给出的预期示例顺序保持一致
内容的提问来源于stack exchange,提问作者MustachAsh
相关产品推荐
相关产品推荐

