gpt4 book ai didi

mysql - SQL - EXISTS 和 NOT EXISTS 不等式

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:51 32 4
gpt4 key购买 nike

Considerf having the following tabes

考虑使用这两个表和以下查询:

SELECT Product. *
FROM Product
WHERE EXISTS
( SELECT *
FROM Codes
WHERE Product.P_code <> Codes.P_code)

SELECT Product. *
FROM Product
WHERE NOT EXISTS
( SELECT *
FROM Codes
WHERE Product.P_code <> Codes.P_code)

下面的推理是否正确?

1.第一个查询将产生两个条目,因为 Codes 中有两个 P_code 行与 Product 中的不相同。 2. 子查询将返回两个条目,但它们将被主查询中的 NOT 条件删除,这将返回零行。

我不确定这些查询中的推理是如何进行的。我可以很容易地预测查询何时打印出 2 或 3 行,但我不知道它在可能打印 0 或 5 行的情况下如何工作(取决于 EXISTS/NOT EXISTS 条件和相等/不等号) .

有人可以对此进行详细说明或给我一份好的读物吗?谢谢!

最佳答案

你的推理不正确。但是,这很容易验证,因此您应该自己运行查询。

第一个查询将返回 Product 中的所有行。为什么?因为对于每个代码, Codes 中至少有一行不等式为真。例如代码'P_01'不匹配'P_03',所以存在不匹配的代码。

第二个查询将不返回 Product 中的任何行。为什么?因为每个产品代码都有一个不匹配的代码。因为存在这样的代码,所以 not exists 失败。

我建议您在 existsnot exists 语句中坚持使用相等条件。逻辑更易于遵循且不易出错。

关于mysql - SQL - EXISTS 和 NOT EXISTS 不等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27558176/

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