mysql - MySQL新手,我得到了我想要的相反结果

标签 mysql sql

问题:获取未为作业 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'
                   );

我发现 INNOT INANYSOMEALL 更容易理解.

关于mysql - MySQL新手,我得到了我想要的相反结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43815170/

相关文章:

mysql - 获取 GROUP BY 的 "filler"空值

php - 如何在php中检查mysql日期是否不为空

sql - 从 MAX 记录中计算 DATEDIFF

sql - 如何获取具有最新2个版本号的记录

python - 使用 F 对象切换查询集中的 boolean 字段

mysql - 查询以避免不同时段的冲突

sql - 如何确保 mysql 表中没有重复项?

Mysql IF条件Left Join同一张表两次

sql - 在 postgresql 中通过 max(col) 获取行过滤

mysql - 服务器启动时可以在 MySQL 中创建触发器吗?