Я создал несколько запросов и не могу понять, почему результаты не такие, как я ожидал.
Я не понимаю, почему запросы II и III не выполняются. t вернуть те же результаты. Я ожидал, что запрос II вернет все строки, не выбранные запросом I.
Я ожидал, что запросы II и III дадут одинаковые результаты. На мой взгляд, результаты III являются правильными.
Я уверен, что что-то упускаю, просто не знаю что.
Пример:
Таблица:
CREATE TABLE [dbo].[TestTable](
[TestTableId] [int] NOT NULL,
[ValueA] [int] NULL,
[ValueB] [int] NULL
) ON [PRIMARY]
Данные:
TestTableId ValueA ValueB
1 10 5
2 20 5
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
Запросы:
Все записи:
Я ожидал, что запросы II и III дадут одинаковые результаты. На мой взгляд, результаты III являются правильными.
Я уверен, что что-то упускаю, просто не знаю что.
Пример:
Таблица:
CREATE TABLE [dbo].[TestTable](
[TestTableId] [int] NOT NULL,
[ValueA] [int] NULL,
[ValueB] [int] NULL
) ON [PRIMARY]
Данные:
TestTableId ValueA ValueB
1 10 5
2 20 5
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
Запросы:
Все записи:
Я ожидал, что запросы II и III дадут одинаковые результаты. На мой взгляд, результаты III являются правильными.
Я уверен, что что-то упускаю, просто не знаю что.
Пример:
Таблица:
CREATE TABLE [dbo].[TestTable](
[TestTableId] [int] NOT NULL,
[ValueA] [int] NULL,
[ValueB] [int] NULL
) ON [PRIMARY]
Данные:
TestTableId ValueA ValueB
1 10 5
2 20 5
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
Запросы:
Все записи: выберите * из TestTable
I. Запрос на выбор:
select * from TestTable
where (ValueA = 10 or ValueA = 20) AND ValueB = 5
Результат:
TestTableId ValueA ValueB
1 10 5
2 20 5
II. Тот же запрос, но НЕ
select * from TestTable
where NOT ((ValueA = 10 or ValueA = 20) AND ValueB = 5)
Результат:
TestTableId ValueA ValueB
5 NULL 10
6 10 NULL
III. Тот же запрос, что и второй (я думаю)
select * from TestTable where TestTable.TestTableId not in
(select TestTableId from TestTable
where (ValueA = 10 or ValueA = 20) AND ValueB = 5)
Результат:
TestTableId ValueA ValueB
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL