sql – 比较两个表在HIVE中是否相等

前端之家收集整理的这篇文章主要介绍了sql – 比较两个表在HIVE中是否相等前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个表,table1和table2.每个都有相同的列:
key,c1,c2,c3

我想检查这些表是否相互相等(它们具有相同的行).到目前为止,我有两个查询(<> =在HIVE中不相等):

select count(*) from table1 t1 
left outer join table2 t2
on t1.key=t2.key
where t2.key is null or t1.c1<>t2.c1 or t1.c2<>t2.c2 or t1.c3<>t2.c3

select count(*) from table1 t1
left outer join table2 t2
on t1.key=t2.key and t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3=t2.c3
where t2.key is null

所以我的想法是,如果返回零计数,表格是相同的.但是,我得到第一个查询的零计数,第二个查询的非零计数.他们究竟有何不同?如果有更好的方法来检查这一点肯定让我知道.

解决方法

第一个排除了t1.c1,t1.c2,t1.c3,t2.c1,t2.c2或t2.c3为空的行.这意味着您有效地进行内部联接.

第二个将找到存在于t1但不存在于t2中的行.

要查找t2中但不存在于t1中的行,您可以执行完全外部联接.以下sql假定所有列都是NOT NULL:

select count(*) from table1 t1
full outer join table2 t2
on t1.key=t2.key and t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3=t2.c3
where t1.key is null /* this condition matches rows that only exist in t2 */
   or t2.key is null /* this condition matches rows that only exist in t1 */

猜你在找的MsSQL相关文章