【问题标题】:Inner join with column alias in DB2在 DB2 中使用列别名进行内部联接
【发布时间】:2014-04-19 17:18:39
【问题描述】:

我有一个更复杂的内部联接查询,它会引发错误:

[错误代码:-206,SQL 状态:42703] DB2 SQL 错误:SQLCODE=-206, SQLSTATE=42703,SQLERRMC=TT.ALIAS,驱动程序=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

这个简单的查询没有意义,但它是我尝试运行的查询的简单版本。 这应该没有错误地运行吧?如果我删除别名它运行没有问题..

提前致谢

【问题讨论】:

    标签: sql db2 inner-join alias


    【解决方案1】:

    您不能在 onwhere 子句中使用列别名。你可以这样做:

    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 子句,然后是 whereselect。换句话说,编译器在评估 from 时并不“知道”select 中的内容。

    【讨论】:

    • 谢谢!而已!只需等待一些强制性时间,然后再将其标记为已接受的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多