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

如何用SQL查询Pizza表中未存在的Size与Topping所有组合

获取未在Pizza表中出现的Size与Topping组合

要实现这个需求,核心是先生成Size和Topping的所有可能组合,再排除已经在Pizza表中存在的组合。下面提供两种通用的SQL实现方式,适配大多数关系型数据库:

方法1:CROSS JOIN + LEFT JOIN 筛选

先通过CROSS JOIN生成Size和Topping的笛卡尔积(所有组合),再通过LEFT JOIN关联Pizza表,筛选出未匹配到的记录:

SELECT s.Id AS SizeId, s.Name AS SizeName, t.Id AS ToppingId, t.Name AS ToppingName
FROM Size s
CROSS JOIN Topping t
LEFT JOIN Pizza p ON s.Id = p.SizeId AND t.Id = p.ToppingId
WHERE p.Id IS NULL;

方法2:NOT EXISTS 子查询

通过NOT EXISTS直接判断当前Size和Topping的组合是否不存在于Pizza表中:

SELECT s.Id AS SizeId, s.Name AS SizeName, t.Id AS ToppingId, t.Name AS ToppingName
FROM Size s
CROSS JOIN Topping t
WHERE NOT EXISTS (
    SELECT 1
    FROM Pizza p
    WHERE p.SizeId = s.Id AND p.ToppingId = t.Id
);

针对示例数据的输出结果

结合你给出的示例数据,执行上述SQL后会得到以下4种未存在的组合:

  • SizeId:1 (Medium) + ToppingId:1 (Pepperoni)
  • SizeId:1 (Medium) + ToppingId:2 (Ham)
  • SizeId:2 (Large) + ToppingId:2 (Ham)
  • SizeId:3 (X-Large) + ToppingId:1 (Pepperoni)

内容的提问来源于stack exchange,提问作者Sebastián Rubina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:10:35