无效的表别名或列引用b

时间:2015-04-17 16:39:01

标签: sql hive

此查询有什么问题(在配置单元中运行):

SELECT count(*) TotalCount, b.region_code
from XXX a
INNER JOIN YYY b
ON a.uid=b.uid
where a.dt = '2015-04-15'
group by b.region_code order by b.region_code

我认为这应该非常简单,但我得到了这个:

FAILED: SemanticException [Error 10004]: Line 6:32 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)

这是YYY表:

hive> desc YYY;
OK
status_code     int
uid    string
zip_code        string
keyword string
region_code     bigint
dt      timestamp
channel int

和XXX表:

hive> desc XXX;
OK
group_key     string
category    string
uid    string
dt      timestamp

1 个答案:

答案 0 :(得分:9)

尝试这样做:

SELECT count(*) as TotalCount, b.region_code
from XXX a INNER JOIN
     YYY b
     ON a.ui = b.uid
where a.dt = '2015-04-15'
group by b.region_code
order by region_code

您的代码存在的问题是b.region_codeorder by不存在。 别名存在(region_code),因为它位于select中。 限定别名不会,因为bgroup by不再有效。我想你可以写:

order by max(b.region_code)

但在这种情况下,这将是愚蠢的。

请注意,除了MySQL之外,这对所有数据库都是通用的。