我是SQL的学生,并且正在Northwind数据库上运行这两个查询。以下两个查询都在获取不同的数据集。我认为它们都是相同的,但我无法掌握的是如何获取不同的数据集。
select o.*
from dbo.Orders o
where 36 < (
select Quantity
from [Order Details] od
where ProductID = 17
and od.OrderID = o.OrderID
)
这将检索9条记录。
select o.*
from Orders o
join [Order Details] od on od.OrderID = o.OrderID
where Quantity < 36
and ProductID = 17
这将检索27条记录。
有人可以向我解释这个难题吗?
答案 0 :(得分:3)
简单。
第一个测试是否
36 < Quantity
。
第二个测试是否
Quantity < 36
。
答案 1 :(得分:1)
如果我们可以看到您正在使用的数据,将会更容易。
但是在我看来,第一个查询(除非我误读了它,因为它的结构非常不常规)选择了36 < Quantity
所在的行,第二个查询选择了Quantity < 36
所在的行。
36 < Quantity
与编写Quantity >= 36
相同...因此希望您可以看到这些条件是相反的。我猜你的两个结果集包含彼此完全不同的行,而不仅仅是行数不同