У меня есть сценарий, например:
with tmp as (select name from table1)
select * from table2 b
where b.name=(select max(name) from tmp)
Однако Hive не может распознать этот синтаксис, поэтому существует ли какой-либо допустимый синтаксис для этого?
После поиска я узналон может использовать join
, чтобы понять:
select table2.* from table2
join (select max(name) as name from tmp) t2
where table2.name = t2.name
, но я не хочу использовать соединение, так как join
будет очень медленным, я просто хочу рассматривать его как ссылку. Как и в MySQL
, вы можете установить результат в качестве ссылки:
set @max_date := select max(date) from some_table;
select * from some_other_table where date > @max_date;
В то время как Hive может добиться эффекта сохранения результата запроса в shell
. Проверка: HiveQL: использование результатов запроса в качестве переменных
Может ли Hive поддерживать такую функцию в режиме SQL?