gpt4 book ai didi

sql - 比较 HIVE 中的两个表的相等性

转载 作者:行者123 更新时间:2023-12-04 03:11:09 38 4
gpt4 key购买 nike

我有两个表,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 */

关于sql - 比较 HIVE 中的两个表的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808672/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com