mysql引用表无效列,无效的表别名或列引用b

What's wrong with this query (running in 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

I think it should be pretty straightforward, but am getting this:

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

Here is the YYY table:

hive> desc YYY;

OK

status_code int

uid string

zip_code string

keyword string

region_code bigint

dt timestamp

channel int

and XXX table:

hive> desc XXX;

OK

group_key string

category string

uid string

dt timestamp

解决方案

Try doing this:

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

The problem with your code is that b.region_code doesn't exist after the order by. The alias exists (region_code) because that is in the select. The qualified alias does not, because the b is no longer valid after the group by. I think you could write:

order by max(b.region_code)

But that would be silly in this case.

Note that this is common to all databases, except MySQL.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值