考虑两个表,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 docs中找不到关于此类查询的任何信息。这个查询的正确语法是什么?两者都完全适用于单独的陈述。
Impala版本为Impala Shell v1.0 (d1bf0d1) built on Sun Apr 28 15:33:52 PDT 2013
。我知道它已经超级老了,但我无法改变它。
答案 0 :(得分:0)
从不在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);
无论如何,您的查询将会返回非感性结果。例如,它将返回两个表中行数的乘积。