MYSQL - 不在所有范围之间

MYSQL - not between all of ranges

我在 MYSQL 中有两个表,其中表 2 包含 ID 范围,表 1 包含 ID 值。我想分离不在 table2 范围内的 table1 id。此查询:

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

将导致 ID 不在至少一个范围之间。但我想获得不在所有范围之间的 ID。

有什么想法吗?

(我不想使用反加入,因为它需要很多资源)

您可以使用 not exists:

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

我不知道我是否做对了,但是如果你想获得不在表 2 的 ID 范围内的表 1 的 ID,你可以试试这个:

select id from table1 
                where table1.id not between 
                 (select min(table2.id) from table2) and 
                  (select max(table2.id) from table2)