Sql 配置单元-筛选不属于多个范围/间隔的值
我有两张桌子,A桌和B桌 表A: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
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)
此处测试: