Mysql sql-查找所有不需要红色部件的作业

Mysql sql-查找所有不需要红色部件的作业,mysql,join,subquery,Mysql,Join,Subquery,我有一个表“作业”,其中包含最终产品,还有一个表“零件”,其中包含最终产品所用的各个零件。 第三个表“supp_part_job”将作业和零件链接在一起,因为它们是n:n关系。 我想找到所有不包含红色零件的最终产品 相关表格: 这是如何完成的,它可以作为子查询和联接来完成吗 我试过: select distinct jobno from supp_part_job where partno in (select partno from part where color != 'red'

我有一个表“作业”,其中包含最终产品,还有一个表“零件”,其中包含最终产品所用的各个零件。 第三个表“supp_part_job”将作业和零件链接在一起,因为它们是n:n关系。 我想找到所有不包含红色零件的最终产品

相关表格:

这是如何完成的,它可以作为子查询和联接来完成吗

我试过:

select distinct jobno from supp_part_job where partno in (select partno from part where color != 'red');
它不起作用,因为如果我理解正确的话,它会返回所有包含非红色部分的作业。

下面的子查询会找到所有不需要的作业。外部查询将找到所需的查询

select distinct jobno
from job 
where jobno not in (
  select jobno
  from supp_part_job pj
  join part p on p.partno = pj.partno
  where color = 'red'
)

对我来说,stackoverflow不是关于做我的家庭作业,因为在你的问题中没有关键字,当其他人有问题时,可以找到这个问题和答案,并找到这个问题作为他的问题的解决方案。我投反对票。我不认为这是正确的,事实上我认为不在颜色中=‘红色’等同于在颜色中!='红色。相应地进行了修复。非常感谢您提供了这个很好的解决方案。
select distinct jobno
from job 
where jobno not in (
  select jobno
  from supp_part_job pj
  join part p on p.partno = pj.partno
  where color = 'red'
)