我正在尝试在配置单元中执行此子查询,但我得到一个错误,即配置单元版本不支持子查询,很遗憾,是的,我们使用的是旧版本的配置单元。
select col1,col2 from t1 where col1 in (select x from t2 where y = 0)
然后我用左半连接重写了子查询,如下所示,
select a.col1,a.col2
FROM t1 a LEFT SEMI JOIN t2 b on (a.col1 =b.x)
WHERE b.y = 0
如果我没有给出where条件,但是当我尝试在where条件中使用b.any列或在select子句中使用b.any列时,它无法识别表b,那么这个查询运行正常。抛出此错误-
Error while compiling statement: FAILED: SemanticException [Error 10004]: Line 3:6 Invalid table alias or column reference 'b': (possible column names
非常感谢您的帮助。
2条答案
按热度按时间hl0ma9xz1#
--当您使用左半联接时,其中条件是右侧表列不工作。请将脚本更改为上述条件。
aiqt4smr2#
而不是
t1 a LEFT SEMI JOIN t2 b
,您可以这样做:t1 a LEFT SEMI JOIN (select * from t2 where y = 0) b
.请看下面的例子。