【发布时间】:2013-02-18 11:23:03
【问题描述】:
我正在使用 Hive 0.9.0,我正在尝试执行查询,即
`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;`
但它返回错误“循环 (...)+ 与输入不匹配...”。 Hive 是否像 Oracle DB 一样支持 FROM 中的多个子查询?
【问题讨论】:
我正在使用 Hive 0.9.0,我正在尝试执行查询,即
`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;`
但它返回错误“循环 (...)+ 与输入不匹配...”。 Hive 是否像 Oracle DB 一样支持 FROM 中的多个子查询?
【问题讨论】:
hive 中允许多个subqueries。
我用下面的代码测试过,它可以工作。
select * from (select id from test where id>10) a
join (select id from test where id>20) b on a.id=b.id;
请发布您的确切代码,以便我提供相关解决方案。
【讨论】:
绝对支持加入子查询。
我认为关键问题是你使用SELECT...FROM。
正确的语法是SELECT * FROM
SELECT a.id, b.user
FROM
(SELECT * FROM a_table) a
JOIN (SELECT * FROM b_table) b ON a.date = b.date;
【讨论】:
如果您想在应用 WHERE 之前获得完整的笛卡尔积 子句,而不是:
SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;
你应该在中间使用'join',即
SELECT a.id, b.user FROM (SELECT...FROM a_table) a join (SELECT...FROM b_table) b WHERE a.date = b.date;
以上在严格模式下是不可接受的。
【讨论】: