sql判断是否在这些范围内 找出不在这个表范围内的数据
a表 范围表 字段2个 startnum endnum (end比start大)bigint类型
数据:
1677747216778239
1677926416781311
1678540816793599
…………
1697382417039359
1703961617040383
………………省略 这个表数据几十万
1743539217436671
1743667217465343
1756364817825791
b表 一个字段 num bigint类型
数据
16777472
16777728
16777984
16779264
……省略 这个表数据上百万
16779776
16780032
16780288
16780544
16780800
a表数据唯一 b表数据唯一
需要筛选出 b表 数据 不在a表范围内 的数据
select * from a_tb WHERE num BETWEEN startnum AND endnum 一个数据判断像这样 现在是两表了
筛选出 不在a表范围的b表数据 怎么来? sql范围筛选
[解决办法]
上面一个是在范围的。
不在范围的加一个not:
select * from 表b b where not exists(select 1 from 表A where b.num>=startnum and b.num<=endnum)
select t.p into iptemp from (
SELECT b.p FROM tb1 a JOIN tb2 b
on b.num between a.startnum and a.endnum
) t
SELECT p FROM tb2 except
SELECT p FROM iptemp