【发布时间】:2015-02-17 22:11:45
【问题描述】:
考虑拥有这两个表和以下查询:
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 条件和等式/不等式符号) .
有人可以详细说明这一点或给我发一份好的阅读材料吗?谢谢!
【问题讨论】:
标签: mysql sql database select exists