hive 中报错 ERROR 10248unsupported subquery expressions currently subquery expressions are only allowed as where and having clause predicates
时间: 2024-05-25 10:12:21 浏览: 25
这个错误是因为在Hive中子查询只能用在WHERE和HAVING子句中,不能用在其他地方,比如SELECT列表中或JOIN条件中等。
如果你在SELECT列表中使用了子查询,可以将其转换为JOIN或者使用LATERAL VIEW语法。
如果你在JOIN条件中使用了子查询,可以将其转换为JOIN或者使用LATERAL VIEW语法。
如果你在其他地方使用了子查询,可以考虑使用临时表或者将查询拆分成多个步骤来避免使用子查询。
相关问题
报 unsupported subquery expression currently subquery expressions are only allowed as where and having clause predicates的错
抱歉,我之前的回答还有问题。在 Hive 中,子查询只能在 `WHERE` 和 `HAVING` 子句中使用,不能在 `SELECT` 子句中直接使用。因此,需要将子查询中的逻辑改写成一个独立的查询语句,并将其结果与主查询语句中的表进行连接。
下面是修改后的 Hive SQL:
```
SELECT CASE
WHEN subquery.sum IS NULL OR subquery.sum = 0 THEN SUBSTR(JNL.FIELD522, 1, 2)
END
FROM FCM_ABR_F_TBFTJNL_S JNL
LEFT JOIN (
SELECT SUM(INSTR(concat_ws('\n', FIELD522, FIELD523, FIELD524, FIELD525), UPPER(NATIONALITY))) sum
FROM PARA_NATIONALITY
) subquery ON 1 = 1;
```
在这个查询语句中,首先将 `FCM_ABR_F_TBFTJNL_S` 表与子查询的结果进行连接,连接条件为 `1 = 1`,这样就能保证子查询的结果与主查询的每一行都进行了连接。然后,在 `SELECT` 子句中使用 `CASE` 函数根据子查询的结果返回相应的值。注意,在这里使用了 `LEFT JOIN`,这样可以保证即使子查询的结果为空,也能够返回主查询中所有的行。
impala正常运行,hive报错:Error while compiling statement: FAILED: SemanticException line 0:undefined:-1 Unsupported SubQuery Expression '1': Only SubQuery expressions that are top level conjuncts are allowed
这个错误通常是由于Hive查询中的子查询不正确导致的。请确保查询中的所有子查询都是顶级连接。换句话说,子查询不能嵌套在其他表达式或子查询中。
例如,以下查询将引发此错误:
```
SELECT *
FROM table1
WHERE column1 IN (SELECT DISTINCT column1 FROM table2 WHERE column2 = 1);
```
在这个查询中,子查询`(SELECT DISTINCT column1 FROM table2 WHERE column2 = 1)`嵌套在IN运算符中,因此不是顶级连接。为了解决这个问题,可以将子查询移动到FROM子句中,如下所示:
```
SELECT *
FROM table1
WHERE column1 IN (SELECT column1 FROM (SELECT DISTINCT column1 FROM table2 WHERE column2 = 1) subq);
```
现在,子查询`SELECT DISTINCT column1 FROM table2 WHERE column2 = 1`被放置在FROM子句中,并且被命名为子查询“subq”。然后,我们在外部查询中使用这个子查询作为顶级连接,以避免语法错误。
相关推荐
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)