sql判断是否在这些范围内 找出不在这个表范围内的数据
a表 范围表 字段2个 startnum endnum (end比start大)bigint类型
数据:
16777472 16778239
16779264 16781311
16785408 16793599
…………
16973824 17039359
17039616 17040383
………………省略 这个表数据几十万
17435392 17436671
17436672 17465343
17563648 17825791
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