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

如何用SQL生成Ingredients表Name列的所有两两组合?

实现Ingredients表的两两组合查询

当然可以实现!这在SQL里是个很常见的需求,用**自连接(Self-Join)**就能轻松搞定。下面给你两种常见场景的具体方案:

1. 只保留无重复的无序组合(如你示例中的情况)

如果你只需要像(Cheese, Beans)、(Cheese, Potato)这种不重复的配对(不会出现反向的(Beans, Cheese)),可以用以下SQL:

SELECT 
    a.Name AS Ingredient1,
    b.Name AS Ingredient2
FROM 
    Ingredients a
JOIN 
    Ingredients b ON a.Name < b.Name;

这个写法通过a.Name < b.Name的条件,确保每个组合只会被返回一次,完美匹配你想要的结果。如果你的数据库对大小写敏感(比如会区分Cheese和cheese),可以改成LOWER(a.Name) < LOWER(b.Name)来统一判断标准。

2. 包含所有有序组合(含反向配对)

如果需要保留所有顺序不同的配对(比如同时有(Cheese, Beans)和(Beans, Cheese)),只需要调整连接条件:

SELECT 
    a.Name AS Ingredient1,
    b.Name AS Ingredient2
FROM 
    Ingredients a
JOIN 
    Ingredients b ON a.Name != b.Name;

这个查询会排除和自身配对的情况(比如(Cheese, Cheese)),如果连自身配对也需要,直接去掉ON子句的条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:03:09