此查询有什么问题(在配置单元中运行):
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
答案 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_code
后order by
不存在。 别名存在(region_code
),因为它位于select
中。 限定别名不会,因为b
后group by
不再有效。我想你可以写:
order by max(b.region_code)
但在这种情况下,这将是愚蠢的。
请注意,除了MySQL之外,这对所有数据库都是通用的。