Oracle数据库查询包含指定三个零件的产品名称
Oracle查询同时包含指定多个零件的产品名称
你的错误SQL逻辑问题在于:单条记录的part字段仅存储单个零件值,无法同时匹配'a and b and c'这类字符串。以下是几种正确的解决方案:
方案1:分组统计法(推荐)
通过分组后统计零件数量,筛选出包含全部指定零件的产品:
SELECT Product FROM your_table_name -- 替换成你的实际表名 WHERE part IN ('a', 'b', 'c') GROUP BY Product HAVING COUNT(DISTINCT part) = 3;
- 若表中同一产品的同个零件不会重复出现,可去掉
DISTINCT,直接用COUNT(part) = 3。
方案2:自连接法
通过三次自连接,匹配同时存在三个零件的产品:
SELECT DISTINCT t1.Product FROM your_table_name t1 JOIN your_table_name t2 ON t1.Product = t2.Product AND t2.part = 'b' JOIN your_table_name t3 ON t1.Product = t3.Product AND t3.part = 'c' WHERE t1.part = 'a';
方案3:EXISTS子查询法
通过子查询分别验证每个零件的存在性:
SELECT DISTINCT Product FROM your_table_name t WHERE EXISTS (SELECT 1 FROM your_table_name WHERE Product = t.Product AND part = 'a') AND EXISTS (SELECT 1 FROM your_table_name WHERE Product = t.Product AND part = 'b') AND EXISTS (SELECT 1 FROM your_table_name WHERE Product = t.Product AND part = 'c');
内容的提问来源于stack exchange,提问作者thanksforanyhelp7777
相关产品推荐
相关产品推荐

