我正在使用蜂巢1.2.1,尝试使用子查询加入时遇到了一些问题。
我的主表是应用程序,我正在尝试根据帐户和日期将其添加到表信用中。当我尝试仅获得一行时,日期条件给我带来了麻烦(功劳必须在申请之后,并且只能是避免在联接中出现重复的一项)。我正在使用以下代码:
SELECT COUNT(1)
FROM applications apps
LEFT JOIN credits c
ON c.python_id =
(
SELECT python_id
FROM credits cr
WHERE cr.ind in ('NP','0P')
AND cr.acct_nbr = apps.acct_nbr
AND cr.date >= apps.date
ORDER BY cr.date DESC
LIMIT 1
)
我收到以下错误:
[Code: 40000, SQL State: 42000] Error while compiling statement: FAILED: ParseException line 8:24 cannot recognize input near 'SELECT' 'python_id' 'FROM' in expression specification
能否请你帮忙?
谢谢
您的查询问题是
> hive does not support sub query with equals clause, you can write sub query only for IN, NOT IN, EXISTS and NOT EXISTS clause.
> You cannot have a sub query which returns more than one row.
请查看-[ https://cwiki.apache.org/confluence/display/Hive/Subqueries+in+SELECT] [1 ]
您的逻辑也有问题。
我的理解是,您正在尝试从左连接的主表中获取计数,并且外部查询没有定义过滤条件来说明您想要的记录。
因此,计数将始终等于主表(应用程序)中的记录数。如果您可以提供具有预期输入和输出的样本数据,我们可以帮助您进行查询。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句