Sql 配置单元-筛选不属于多个范围/间隔的值

Sql 配置单元-筛选不属于多个范围/间隔的值,sql,hadoop,hive,hiveql,Sql,Hadoop,Hive,Hiveql,我有两张桌子,A桌和B桌 表A: Value ----- 1001 2001 3001 4001 5001 Min Max --- --- 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 表B: Value

我有两张桌子,A桌和B桌

表A:

Value       
-----
1001        
2001        
3001        
4001        
5001
Min             Max
---             ---
1000            2000
3000            4000
5000            6000
7000            8000
9000            10000
表B:

Value       
-----
1001        
2001        
3001        
4001        
5001
Min             Max
---             ---
1000            2000
3000            4000
5000            6000
7000            8000
9000            10000
我需要从表A中获取那些不在主表B中任何间隔/范围之间的记录

预期结果:

Value
-----
2001
4001

请告知编写我的配置单元查询以获得预期结果的方法。

您可以通过
交叉连接和聚合来实现这一点:

select a.value
from table_a a cross join
     table_b b
group by a.value
having sum(case when a.value between b.min and b.max then 1 else 0 end) = 0;

下面是另一个使用join和NOT IN语句的示例:

SELECT value
FROM table_a
WHERE value NOT IN
(SELECT value
 FROM table_a
 INNER JOIN table_b
 ON table_a.value BETWEEN table_b.min AND table_b.max)
此处测试: