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

求查询特定产品未可用类型的SQL语句(基于表R与S)

嘿,我来帮你搞定这个SQL查询需求!

首先先明确下我们的表结构(根据你的描述整理的,实际可以根据你的真实字段名调整):

  • 表R:包含两列,product_id(值为P1到P10)和available_type(记录对应产品的可用类型,比如T1、T3这类)
  • 表S:只有一列type_id,包含所有5种类型T1到T5

查询单个特定产品的未可用类型

如果你要查某一个特定产品(比如P1)的所有未可用类型,有两种常用的写法:

方法1:LEFT JOIN + IS NULL筛选

这种方法是把所有类型和目标产品的可用类型做左关联,关联不上的就是未可用类型:

SELECT s.type_id AS unavailable_type
FROM S s
LEFT JOIN R r 
  ON s.type_id = r.available_type 
  AND r.product_id = 'P1' -- 这里替换成你要查的特定产品
WHERE r.available_type IS NULL;

方法2:NOT EXISTS子查询

这个思路更直观:检查S里的每个类型,是否不存在于目标产品的可用类型列表中,不存在的就是我们要的:

SELECT s.type_id AS unavailable_type
FROM S s
WHERE NOT EXISTS (
    SELECT 1
    FROM R r
    WHERE r.product_id = 'P1' -- 替换为目标产品
      AND r.available_type = s.type_id
);

查询所有产品的未可用类型(可选扩展)

如果之后你需要批量查所有产品的未可用类型,可以先生成所有产品和所有类型的完整组合,再排除已有的可用类型:

SELECT 
    p.product_id,
    s.type_id AS unavailable_type
FROM (SELECT DISTINCT product_id FROM R) p -- 取出所有唯一产品
CROSS JOIN S s -- 生成每个产品+所有类型的组合
LEFT JOIN R r 
  ON p.product_id = r.product_id
  AND s.type_id = r.available_type
WHERE r.available_type IS NULL
ORDER BY p.product_id, s.type_id; -- 按产品和类型排序,方便查看

注意事项

  • 记得把SQL里的字段名(比如product_id、available_type)替换成你实际表中的字段名
  • 确保表S确实包含了全部5种类型T1到T5,这样结果才准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:33:28