尝试使用 min 子查询查找记录时 Hive 出错

Posted

技术标签:

【中文标题】尝试使用 min 子查询查找记录时 Hive 出错【英文标题】:Hive gives error when trying to find record with min subquery 【发布时间】:2018-02-05 17:01:37 【问题描述】:

在蜂巢中,

我正在尝试选择具有最小时间戳的条目,但是它会引发以下错误,不知道是什么原因。

select * from sales where partition_batch_ts = (select max(partition_batch_ts) from sales);

错误

编译语句时出错:FAILED: ParseException line 1:91 cannot identify input near 'select' 'max' '(' in expression specification

【问题讨论】:

【参考方案1】:

我认为您需要使用正确的表别名。另外,必须使用IN 而不是=

SELECT s1.*
FROM sales s1
WHERE s1.partition_batch_ts IN
    (SELECT MAX(partition_batch_ts)
     FROM sales s2);

来自 Hive 手册,SUBQUERIES

从 Hive 0.13 开始,WHERE 支持某些类型的子查询 子句。

【讨论】:

以上是关于尝试使用 min 子查询查找记录时 Hive 出错的主要内容,如果未能解决你的问题,请参考以下文章

SQL 子查询:如何用 min(date) 和 min(hour) 绘制记录

如何在 Hive/SQL 的 where/have 子句中使用 min()(以避免子查询)

从 PySpark 查询 Hive 表时出错

Hive 子查询出错 - 不支持的子查询表达式

尝试将记录添加到具有先前创建的记录的表时出错

在 hive 中将时间戳转换为 hive 格式时出错