如果表a是表b的子集,那么在黑斑羚中查找的最佳方法是什么?

时间:2018-11-15 02:06:29

标签: sql impala

我在Impala中有两个基于镶木地板的外部表,想知道一个表是否是另一个表的子集,什么是最好的方式?

两个表具有相同的架构,具有数十个甚至数百个字段

谢谢。

1 个答案:

答案 0 :(得分:0)

假设在任何一个表中都没有重复项,那么如果计数来自以下内容,则A将是B的子集:

select count(*)
from B;

与以下来源的计数相同:

select count(*)
from ((select * from a) union
      (select * from b)
     ) ab;

也就是说,将A的行添加到B并消除重复项不会再添加任何行。

这不是 strict 子集关系,因为“ A”可能等同于“ B”。对于严格的子集关系,请添加以下条件:

select count(*)
from A

严格小于B的数量。

这假设AB中的类型和列是兼容的–如果您要问一个是另一个的子集,这是一个合理的假设。