已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
2天前关闭。
Improve this question
我开始学习SQL,我有一个问题。我正在运行以下查询:
SELECT ProductName
FROM Products
WHERE ProductID =ALL (
SELECT ProductID
FROM OrderDetails
WHERE Quantity < 0
)
order by ProductID;
如果我查找小于零的数量,为什么此查询返回值?在OrderDetails表中,没有小于零的数量。因此,此查询的输出不应该为空吗?我是否遗漏了某些内容。
w3schools SQL Practice
2条答案
按热度按时间fwzugrvs1#
如果子查询具有始终为false的WHERE子句,则子查询将返回空结果。
https://dev.mysql.com/doc/refman/8.0/en/all-subqueries.html表示:
最后,如果表t2为空,则表达式为TRUE。因此,当表t2为空时,以下表达式为TRUE:
演示:https://dbfiddle.uk/zCO71Q15
ALL predicate 意味着如果子查询中至少有一行导致比较结果为false,则该 predicate 为false。
但是如果子查询返回0行,那么当然就不可能有任何行导致 predicate 为false。
2admgd592#
有没有写得更清楚些
即,查找所有产品,其中订单已被放置为正好10个。