如何在Hive中编写子查询,例如:column =(从表中选择xx)?

时间:2019-10-25 07:47:23

标签: hive hql

我有一个场景,例如:

<div class="container">

  <a href="#">This textlink is very long and should break nicely</a>
  
</div>

但是,Hive无法识别此语法,因此有任何合法的语法吗?

搜索后,我知道它可以使用with tmp as (select name from table1) select * from table2 b where b.name=(select max(name) from tmp) 来实现:

join

但是我不想使用join,因为select table2.* from table2 join (select max(name) as name from tmp) t2 where table2.name = t2.name 会非常慢,我只想将其作为参考。 像join中一样,您可以将结果设置为参考:

MySQL

Hive可以达到将查询结果存储在set @max_date := select max(date) from some_table; select * from some_other_table where date > @max_date; 中的效果。检查:HiveQL: Using query results as variables

Hive是否可以在SQL模式下支持此类功能?

1 个答案:

答案 0 :(得分:0)

在Hive中,您可以实现以下目标:

select * from table2 b 
where b.name=(select max(name) from table1)

其他方式: 您还可以在配置单元中创建临时表,这将有助于复制上面的Oracle查询。

CREATE TEMPORARY TABLE tmp AS SELECT name FROM table1;
SELECT * FROM table2 b WHERE b.name=(SELECT max(name) FROM tmp);