Как отфильтровать только подмножество данных, сохраняя при этом существующие записи в виде таблицы?

[SQL Novice] У меня есть таблица, которая выглядит так:

id             date
1              2019-01-01
1              2019-01-02
2              2019-03-01
2              2019-05-01

Я хочу отфильтровать только столбец id в 2, где дата находится между 01.04.2019 и 01.05.2019, не влияя на id равно 1.

Новая таблица должна выглядеть так:

id             date
1              2019-01-01
1              2019-01-02
2              2019-03-01

Я пробовал это:

select * from table1 where id =2 and date between 2019-03-01 and 2019-04-01

И получите этот набор данных:

id             date

2              2019-03-01

person RustyShackleford    schedule 02.08.2019    source источник
comment
Поместите все свои критерии where в круглые скобки и добавьте or id <> 2 вне их...   -  person sgeddes    schedule 02.08.2019


Ответы (2)


Я думаю, вы хотите or:

where id = 1 or
      (id = 2 and date between '2019-03-01' and '2019-04-01')
person Gordon Linoff    schedule 02.08.2019

для желаемого результата нужно

select * from table1 where  [date] >= '2019-01-01' and [date] <= '2019-03-01'
person Zaynul Abadin Tuhin    schedule 02.08.2019
comment
Добавлены галочки вокруг ваших дат и изменены на строки, совместимые с ANSI. ;) - person Sean Lange; 02.08.2019