使用impala的sql合并查询

6za6bjd0  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(529)

考虑两张table, ratings 以及 products 还有一些列。我正在尝试使用

SELECT AVG(r.rating), COUNT(p.prod_id) FROM ratings as r, products as p;

我保存为 script.impala 然后用 impala-shell -f script.impala . 我得到以下信息: [user@localhost]$ impala-shell -f script.impala *mumble* Query: select AVG(r.rating), COUNT(p.prod_id) FROM ratings as r, products as p ERROR: NotImplementedException: Join between 'r' and 'p' requires at least one conjunctive equality predicate between the two tables Could not execute command: select AVG(r.rating), COUNT(p.prod_id) FROM ratings as r, products as p 我在 Impala 文档中没有找到关于这种查询的信息。这个查询的正确语法是什么?两种方法在不同的语句中都能完美地工作。
Impala 的版本是 Impala Shell v1.0 (d1bf0d1) built on Sun Apr 28 15:33:52 PDT 2013 . 我知道它太老了,但我不能改变它。

zpgglvta

zpgglvta1#

不要在句子中使用逗号 FROM 条款。始终使用适当的、明确的 JOIN 语法。在您的情况下,您有一个查询。这个怎么样?

select r.avg_rating), p.cnt_products
from (select avg(r.rating) as avg_rating from ratings r) cross join
     (select count(*) as cnt_products from products p);

不管怎样,你的查询措辞都会返回非理性的结果。例如,它将返回两个表中行数的乘积。

相关问题