如何通过Oracle SQL生成FRUITS表中水果的有序两两非重复配对结果?
Oracle SQL实现水果两两非重复组合查询
要生成需求中的两两不同水果组合结果集,可以通过自连接(Self-Join)实现,具体如下:
实现代码
SELECT f1.fruit_name AS Resulting_column_1, f2.fruit_name AS Resulting_column_2 FROM fruits f1 CROSS JOIN fruits f2 WHERE f1.fruit_name != f2.fruit_name ORDER BY f1.fruit_name, f2.fruit_name;
代码说明
- 自连接逻辑:将
fruits表自身分别作为两个表(别名f1和f2)进行交叉连接,会生成所有可能的行组合(包括自身匹配的情况)。 - 筛选条件:
WHERE f1.fruit_name != f2.fruit_name排除了水果名称相同的组合,只保留两两不同的配对。 - 排序:
ORDER BY子句让结果按照第一列、第二列的水果名称排序,和需求中的输出顺序一致。
你也可以用内连接的写法达到相同效果,逻辑等价:
SELECT f1.fruit_name AS Resulting_column_1, f2.fruit_name AS Resulting_column_2 FROM fruits f1 JOIN fruits f2 ON f1.fruit_name != f2.fruit_name ORDER BY f1.fruit_name, f2.fruit_name;
内容的提问来源于stack exchange,提问作者JB999
相关产品推荐
相关产品推荐

