6

我正在使用 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 中的多个子查询?

4

3 回答 3

6

hive 中允许多个子查询。

我用下面的代码进行了测试,它可以工作。

    select * from (select id from test where id>10) a 
join (select id from test where id>20) b on a.id=b.id;

请发布您的确切代码,以便我提供相关解决方案。

于 2013-02-19T05:04:04.280 回答
1

绝对支持加入子查询。

我认为关键问题是你使用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;
于 2013-02-23T16:47:45.003 回答
0

如果您想在应用 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;

以上在严格模式下是不允许的。

于 2013-02-24T16:04:34.710 回答