gpt4 book ai didi

hadoop - Hive QL - 在另一个表中使用键的子集行

转载 作者:可可西里 更新时间:2023-11-01 15:34:22 25 4
gpt4 key购买 nike

我想用表 B 中出现的键对表 A 的所有行进行子集化。

表A-

Idn   X  Y ...
12 * *
13 * *
14 * *

表B-

Idn   A B C ...
12 * * *
12 * * *
14 * * *

我想选择 TableA 中的所有元素,键出现在 TableB 中。

以下 SQL 查询在 Hive 中不起作用 -

select * from TableA where Idn in (select distinct Idn from TableB) a;

还有其他方法吗?

可以在一个查询中完成吗?

请注意,两个表的 Idn 都不需要是唯一的。

最佳答案

有点像 SEMI JOIN应该这样做:

SELECT * FROM TableA LEFT SEMI JOIN TableB on (TableA.Idn = TableB.Idn)

LEFT SEMI JOIN 以高效的方式实现不相关的 IN/EXISTS 子查询语义。从 Hive 0.13 开始,使用子查询支持 IN/NOT IN/EXISTS/NOT EXISTS 运算符,因此大多数这些 JOIN 不必再手动执行。使用 LEFT SEMI JOIN 的限制是右侧表只能在连接条件(ON 子句)中引用,而不能在 WHERE 或 SELECT 子句等中引用。

关于hadoop - Hive QL - 在另一个表中使用键的子集行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842454/

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