我有一个这样的查询,并且 Impala 似乎不支持 SELECT 语句中的子查询。我怎样才能在 Impala 中巧妙地重写它?
SELECT
col1,
col2,
...
CASE
WHEN (SELECT 1
FROM
table1 x,
table2 y
WHERE
x.id = y.id
LIMIT 1) = 1
THEN
'A'
ELSE
'B'
END
coln
FROM
...
您的查询有以下错误:
AnalysisException:选择列表中不支持子查询。
最佳答案
你可以试试
SELECT col1, col2, ... 'A' coln
FROM ...
WHERE EXISTS (SELECT 1 FROM table1 x, table2 y WHERE x.id = y.id LIMIT 1)
UNION ALL
SELECT col1, col2, ... 'B' coln
FROM ...
WHERE NOT EXISTS (SELECT 1 FROM table1 x, table2 y WHERE x.id = y.id LIMIT 1)
不保证,我自己还没有尝试过。
关于select - (黑斑羚)分析异常 : Subqueries are not supported in the select list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019227/