问题:获取未为作业 J3 提供的零件的零件名称。 (仅使用子查询)
表格信息:
供应商{s_num、s_name、状态、城市}
Spj {s_num,p_num,j_num,数量}
这就是我所拥有的:
SELECT pname, color
FROM Part
WHERE p_num = ANY (SELECT p_num
FROM Spj
WHERE j_num = 'j3');
显然,我在这里得到了为作业 j3 提供的零件。
当我把它翻转到这个:
SELECT pname, color
FROM Part
WHERE p_num = ANY (SELECT p_num
FROM Spj
WHERE j_num <> 'j3');
我的结果列出了零件表中的每个零件,因为其他工作至少售出了每个零件 1 个。
我认为该问题想要从结果中排除作业 j3 中出售的任何零件。
最佳答案
如果您想使用此公式:
SELECT pname, color
FROM Part
WHERE p_num NOT IN (SELECT p_num
FROM Spj
WHERE j_num = 'j3'
);
我发现 IN
和 NOT IN
比 ANY
、SOME
和 ALL 更容易理解
.
关于mysql - MySQL新手,我得到了我想要的相反结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43815170/