Как выбрать время из первой таблицы, которые не доступны во второй таблице? - PullRequest
2 голосов
/ 04 июля 2019

У меня есть проблема, когда во второй таблице есть несколько строк, запрос ниже возвращает все поля независимо от того, что в ней.

Я уже пробовал использовать не между временем начала и конца, котороеработает абсолютно нормально, когда во второй таблице есть только одна строка, но как только я добавляю другую строку, она возвращает все.

declare @firstTable table (time time(0))
insert @firstTable(time) values ('08:30'),('09:45'),('11:00'),('12:15'),('13:30'),('14:45'),('16:00'),('17:15'),('18:30')

declare @secondTable table (startTime time(0), endTime time(0))
insert @secondTable(startTime, endTime) values ('08:30','10:45'),('13:30','17:00')

select distinct f.time
from @firstTable f, @secondTable s
where f.time not between s.startTime and s.endTime

С кодом выше ожидаемое решение должно быть 11:00, 12: 15, 17:15 и 18:30, но все время возвращается.

1 Ответ

2 голосов
/ 04 июля 2019

Я думаю not exists делает то, что вы хотите:

select *
from @firstTable ft
where not exists (select 1
                  from @secondTable st
                  where ft.time >= st.startTime and ft.time <= st.endTime
                 );

Здесь - это скрипка db <>.

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