Hive如何通过select实现两表间单字段插入及子查询报错解决
报错原因
- Hive不支持在SELECT查询的字段列表中使用无关联的嵌套标量子查询,你当前语句中
(select substring(condate, 0, 7))属于多余的子查询嵌套,完全不需要包裹SELECT语句,这是触发报错的直接原因。
解决方案
直接删除字段上多余的子查询包裹即可,修改后的可执行SQL如下:
INSERT INTO TABLE energyx SELECT log_id, house_id, condate, conhour, energy_reading, flag, SUBSTRING(condate, 0, 7) FROM energy1;
- 额外优化建议:可以给计算生成的月份字段增加别名,提升表结构可读性,比如修改为
SUBSTRING(condate, 0, 7) AS condate_month。 - 如果你后续需要在字段逻辑中关联其他表取数,也不要直接写在SELECT的字段列表中,统一改用JOIN语法实现关联取数,避免触发Hive子查询相关的兼容性问题。
内容的提问来源于stack exchange,提问作者user10384204
相关产品推荐
相关产品推荐

