0

如何...或者我可以field as val在同一个 select-clause 和 where-clause 中使用字段别名?

select
    a.LONG_NAME_I_CANT_REMEMBER as val1,
    a.NAME_I_DONT_WANT_2_REMEMBER as val2,
    val1-val2 as diff
from
    random_table a
where
    (val1 > 12)

没有内联视图/内联查询,它与表别名无关

4

1 回答 1

3

您不能在您的SELECT子句中使用您在子句中定义的别名WHEREWHERE从逻辑上讲,在确定要显示哪些列(SELECT列表)之前确定要返回的行(应用子句),因此在WHERE处理子句时,别名还不存在。

当然,您可以重构查询,以便在内联视图中选择数据并为其设置别名,然后WHERE在该视图之外应用该子句。就像是

select a.*,
       val1-val2 as diff
  from (select a.LONG_NAME_I_CANT_REMEMBER as val1,
               a.NAME_I_DONT_WANT_2_REMEMBER as val2,
          from random_table a) a
 where (val1 > 12)
于 2014-09-16T06:32:28.937 回答