Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Запрос в MySQL - найти числа вне интервалов

Пишу выборку и наверное торможу. Первая таблица - набор от 1 до 1000, например A=1 A=2 A=3 ... A=999 A=1000
Вторая таблица - набор пар значений, интервалы, например, A=100 B=150 А=1 В=40 A=300 B=350
Сначала нарисовал поиск чисел из первой таблицы, которых нет во второй (т.е. по полю А) :
SELECT t1.a FROM table1 t1 left join table2 t2 on (t1.a=t2.a) WHERE t2.a IS NULL
Работает! Теперь ищу числа из первой таблицы, которые не попадают в ИНТЕРВАЛЫ второй таблицы и тут встал... Еще один джойн что ли делать? А в итоге надо найти одно минимальное значение из выборки, т.е. в данном случае это 41.


Ответ

Так?
select min(t1.a) a from table1 t1 left join (select distinct tt1.a from table1 tt1 join table2 tt2 on tt1.a between tt2.a and tt2.b ) tt on t1.a=tt.a where tt.a is null

Комментариев нет:

Отправить комментарий