gpt4 book ai didi

mysql - 三个查询之间的区别

转载 作者:行者123 更新时间:2023-11-30 23:10:08 25 4
gpt4 key购买 nike

首先,我将发布练习的正确解决方案:练习:获取未提供给项目 J3 的部件的部件号。

SELECT pno
FROM p
WHERE NOT EXISTS (
SELECT *
FROM spj
WHERE spj.pno = p.pno
AND spj.jno = 'J3'
);

我的解决方案,两者都不正确:

SELECT DISTINCT p.pno
FROM (
p INNER JOIN spj
ON p.pno = spj.pno
)
WHERE spj.jno <> 'J3';

SELECT DISTINCT p.pname
FROM (
p INNER JOIN spj
ON spj.pno = p.pno
)
WHERE spj.jno NOT IN ('J3');

我有 2 个解决方案,我认为它们应该给出相同的答案,但它们没有。我的问题是有什么区别。 (我的方案包括所有部分,正确的方案不包括第3部分)

最佳答案

对于第二个查询,您正在寻找与 jno j3 不同的部分和项目的组合。实际上,这为您提供了链接到非 j3 项目的所有部分,但这并不表示该项目根本没有该部分。您只是排除了这些结果。

例如:

Project  Part
1 j3
1 a1
2 a1
3 j3

项目 1 和 2 都将被返回,因为它们都有与 j3 不同的部分。只有 3 个将被排除,因为除了 j3 之外没有其他部分可以匹配。


至于第三个查询,它实际上做了同样的事情。

关于mysql - 三个查询之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com