查询:
没有功能的列:
从表订购 ACCOUNTID 选择 ACCOUNTID ;
(上述查询在HIVE和MYSQL中均正常工作)
包含功能的列:
从表格顺序中选择 concat(' test _',ACCOUNTID) ACCOUNTID;
在mysql中,上面的查询工作正常。
在hive中,抛出异常
失败:SemanticException [错误10004]: 第1:59行无效的表别名或列引用' ACCOUNTID': (可能的列名是:_c0)
Mysql:
按订单排序与函数中涉及的列一起正常工作
Hive:
按排序不使用函数中涉及的列
临时解决方案:
从表格按 tempcolumn顺序选择 concat(' test _',ACCOUNTID)作为tempColumn ;
如果没有将列指定为tempcolumn,是否有可用的解决方案?
注意:
我想单独连接结果(test_ACCOUNTID)..而不将ACCOUNTID作为另一列公开
答案 0 :(得分:2)
也许您也可以选择accountid列进行排序。
SELECT accountid,concat('test_',ACCOUNTID) from table order by accountid;
或者,重命名" concat(' test _',accountid)"像这样:“
SELECT concat('test_',ACCOUNTID) accountid from table order by accountid;
答案 1 :(得分:0)
取决于您尝试实现的目标。如果您希望您的连锁结果按帐户ID 的顺序显示,那么您可以在投影列表中公开ACCOUNTID
SELECT concat('test_',ACCOUNTID), ACCOUNTID FROM <table> ORDER BY ACCOUNTID
答案 2 :(得分:0)
据我所知,它是为函数表达式使用别名的唯一方法,并使用该字段名称使用“分组依据”,“排序依据”,“排序依据”等子句。