在 Hive 中选择

Posted

技术标签:

【中文标题】在 Hive 中选择【英文标题】:Select within Select in Hive 【发布时间】:2019-09-26 03:04:19 【问题描述】:

我正在尝试使用来自另一个表 t1 的值在输出表 t2 中插入记录。这样做时,我还需要使用 t2 中 col3 列的最大值。

为了达到同样的效果,我尝试在表 t1 的 select 语句中使用 select max(c1)。 这同样适用于 SQL。是否有任何替代方法可以在 Hive 中实现相同的功能?

INSERT INTO t2 
SELECT t1.c AS col1,
(SELECT MAX(col3)+1 FROM t2) AS col2
FROM t1;

这是我遇到的错误

FAILED: ParseException line 7:1 cannot recognize input near '(' 'select' 'max' in expression specification

【问题讨论】:

除了MAX计算的问题,t2还包含col3列,需要提供一些东西插入其中 【参考方案1】:
INSERT INTO t2 
SELECT t1.c AS col1, 
       s.col2, 
       ... you need to provide all columns here
FROM t1
     cross join (select MAX(col3)+1 AS col2 FROM t2) s
;

【讨论】:

感谢@leftjoin,这是一个显而易见且简单的解决方案,但我想多了!感谢您的帮助!

以上是关于在 Hive 中选择的主要内容,如果未能解决你的问题,请参考以下文章

是否可以选择从 Hive 中的哪个数据库中选择

在 HIVE 中选择上个月的 YYYYMM

Hive 选择数据到结构数组中

Hive - 选择另一个字段的值在连续时间戳中递增的 id

Hive:从集合中选择最近的项目

Hive 错误 - 从表中选择 *;