首页 > 解决方案 > 这两种说法有什么区别?

问题描述

我是 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 条记录。

有人可以向我解释这个难题。

标签: sql-server

解决方案


简单的。

第一个测试是否

36 < Quantity.

第二个测试是否

Quantity < 36.


推荐阅读