【问题标题】:Hive multiple subqueriesHive 多个子查询
【发布时间】: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 中的多个子查询?

【问题讨论】:

    标签: subquery hive


    【解决方案1】:

    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;
    

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

    【讨论】:

    • 谢谢,巴拉斯瓦米!就像在您的示例中一样,我已经使用 JOIN 进行了查询
    【解决方案2】:

    绝对支持加入子查询。

    我认为关键问题是你使用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;
    

    【讨论】:

    • 我假设 ... 是“某些字段”的简写
    【解决方案3】:

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

    以上在严格模式下是不可接受的。

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      相关资源
      最近更新 更多