我在Impala中有两个基于镶木地板的外部表,想知道一个表是否是另一个表的子集,什么是最好的方式?
两个表具有相同的架构,具有数十个甚至数百个字段
谢谢。
答案 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
的数量。
这假设A
和B
中的类型和列是兼容的–如果您要问一个是另一个的子集,这是一个合理的假设。