select - (黑斑羚)分析异常 : Subqueries are not supported in the select list

标签 select subquery impala

我有一个这样的查询,并且 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/

相关文章:

mysql - 有什么方法可以同时存储 SELECT 结果并输出结果集吗?

mysql - 如果 new_value <= value_from_different_row 有条件更新

sql - Oracle 索引查询不起作用

mysql - 我可以从子查询中同时获取 MAX 和 COUNT 吗?

python - 如何处理 "finally" block 中的异常?

c - 对非阻塞套接字使用 select() 进行连接总是返回 1

mysql - (MYSQL) SQL 选择查询 - 也许是 OUTER JOIN?

MySQL select count(*) 函数查找所有带 OPEN 的状态

apache-spark - Parquet 表中的TIMESTAMP列CDH5与CDH6

python - 如何了解Apache Impala的zlib压缩查询配置文件