我在蜂巢中有两张桌子:
表1:
1,Nail,maher,24,6.2
2,finn,egan,23,5.9
3,Hadm,Sha,28,6.0
4,bob,hope,55,7.2
表2:
1,Nail,maher,24,6.2
2,finn,egan,23,5.9
3,Hadm,Sha,28,6.0
4,bob,hope,55,7.2
5,john,hill,22,5.5
6,todger,hommy,11,2.2
7,jim,cnt,99,9.9
8,will,hats,43,11.2
Hive有没有办法检索表2中不存在于表1中的新数据?
在其他数据库工具中,您将使用内部左/右。但
答案 0 :(得分:1)
如果您使用的是Hive版本> = 0.13,则可以使用此查询:
SELECT * FROM A WHERE A.firstname, A.lastname ... IN (SELECT B.firstname, B.lastname ... FROM B);
但我不确定Hive是否支持IN子句中的多个coloumns。 如果不是这样的话可以起作用:
SELECT * FROM A WHERE A.firstname IN (SELECT B.firstname FROM B) AND A.lastname IN (SELECT b.lastname FROM B) ...;
答案 1 :(得分:0)
在测试NOT IN之前将字段连接在一起可能更明智:
SELECT *
FROM t2
WHERE CONCAT(t2.firstname, t2.lastname, CAST(t2.val1 as STRING), CAST(t2.val2 as STRING)) NOT IN
(SELECT CONCAT(t2.firstname, t2.lastname, CAST(t2.val1 as STRING), CAST(t2.val2 as STRING))
FROM t1)
执行连续的NOT IN子查询可能会给您带来错误的结果。
从上面的示例中,带有值(&#39; nail&#39;,&#39; egan&#39;,28,7.2)的新记录不会显示为带有连续NOT IN语句的新记录。< / p>