我有一个更复杂的查询,内部联接会引发错误:
[错误代码: - 206,SQL状态:42703] DB2 SQL错误:SQLCODE = -206, SQLSTATE = 42703,SQLERRMC = TT.ALIAS,DRIVER = 4.13.127。 2)[错误代码: -727,SQL状态:56098] DB2 SQL错误:SQLCODE = -727,SQLSTATE = 56098,SQLERRMC = 2; -206; 42703; TT.ALIAS,DRIVER = 4.13.127
不起作用的查询的简单版本是:
select column1 as alias from table1 tt
inner join table1 ts
on tt.alias = ts.column1
这个简单的查询没有意义,但它是我试图运行的查询的简单版本。 这应该没有错误运行吗?如果我删除它运行的别名没有问题..
提前致谢
答案 0 :(得分:3)
您不能在on
或where
子句中使用列别名。你可以这样做:
select column1 as alias
from table1 tt inner join
table1 ts
on tt.column1 = ts.column1;
你也可以这样做:
select alias
from (select column1 as alias
from table1
) tt inner join
table1 ts
on tt.alias = ts.column1;
在编译阶段,查询将按子句进行评估,首先是from
子句,然后是where
和select
。换句话说,编译器在评估select
时不会“知道”from
中的内容。