diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java index 274170693eb5ff..cf6c543ec7a8cb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java @@ -143,6 +143,7 @@ public class Analyzer { // Flag indicating if this analyzer instance belongs to a subquery. private boolean isSubquery = false; + private boolean isFirstScopeInSubquery = false; // Flag indicating if this analyzer instance belongs to an inlineview. private boolean isInlineView = false; @@ -167,6 +168,7 @@ public class Analyzer { public void setIsSubquery() { isSubquery = true; + isFirstScopeInSubquery = true; globalState.containsSubquery = true; } @@ -789,7 +791,7 @@ public SlotDescriptor registerColumnRef(TableName tblName, String colName) throw * This column could not be resolved because doris can only resolved the parent column instead of grandpa. * The exception of this query like that: Unknown column 'k1' in 'a' */ - if (d == null && hasAncestors() && isSubquery) { + if (d == null && hasAncestors() && isSubquery && isFirstScopeInSubquery) { // analyzer father for subquery if (newTblName == null) { d = getParentAnalyzer().resolveColumnRef(colName);