2016-07-13 2 views
0

У меня есть две таблицы в MYSQL, где table2 содержит диапазоны идентификаторов, а таблица1 содержит значения id. Я хочу выделить идентификаторы таблицы1, которые не входят в диапазоны table2. этот вопрос:MYSQL - не между всеми диапазонами

select id 
from table1,table2 
where table1.id not between table2.start and table2.end 

приведет к идентификаторам, которые не могут быть связаны хотя бы с одним из диапазонов. Но я хочу получить идентификаторы, которые не находятся между всеми диапазонами.

любая идея?

(я не хочу использовать анти-соединения, поскольку она нуждается много ресурсов)

ответ

0

Вы можете использовать not exists:

select t1.* 
from table1 t1 
where not exists (select 1 
        from table2 t2 
        where t1.id between t2.start and t2.end 
       ); 
0

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

select id from table1 
       where table1.id not between 
       (select min(table2.id) from table2) and 
        (select max(table2.id) from table2) 
Смежные вопросы