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)
我在 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)