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

sycxhyv7  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(385)

我有两张table,a桌和b桌。
表a:

Value       
-----
1001        
2001        
3001        
4001        
5001

表b:

Min             Max
---             ---
1000            2000
3000            4000
5000            6000
7000            8000
9000            10000

我需要从表a中获取那些不属于主表b中任何间隔/范围的记录。
预期结果:

Value
-----
2001
4001

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

lc8prwob

lc8prwob1#

下面是另一个使用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)

此处测试:http://sqlfiddle.com/#!9/a6685c/1号

1qczuiv0

1qczuiv02#

你也许可以用一个 cross join 和聚合:

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;

相关问题