В чем разница между этими двумя утверждениями? - PullRequest
0 голосов
/ 08 ноября 2019

Я изучаю 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 записей.

Может кто-нибудь объяснить мне эту загадку.

Ответы [ 2 ]

3 голосов
/ 08 ноября 2019

Простой.

Первый тест проверяет,

36 < Quantity.

Второй тест:

Quantity < 36.

1 голос
/ 08 ноября 2019

Было бы проще, если бы мы могли видеть данные, которые вы используете.

Но мне кажется, что первый запрос (если я не прочитал его, поскольку он структурирован довольно нетрадиционно) выбирает строки, где 36 < Quantity, а второй выбирает строки, где Quantity < 36.

36 < Quantity - это то же самое, что и запись Quantity >= 36 ... так что, надеюсь, вы увидите, что эти условия противоположны. Я полагаю, что ваши два набора результатов содержат совершенно разные строки, а не просто разное количество строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...