在psql中,尝试引用WHERE
子句中的别名:
SELECT
SUBSTRING(pk, 6, 2)::INT AS _year
FROM
listing
WHERE
_year > 90
导致错误:
ERROR: column "_year" does not exist
LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90...
^
********** Error **********
ERROR: column "_year" does not exist
是否可以在WHERE
子句中引用别名?
答案 0 :(得分:7)
这是不可能的,因为在sql中,执行的顺序是第一个,where子句然后是select。在where子句执行的时候,它不知道你定义的别名是什么,所以你会得到那个错误。
您需要像这样重写您的查询..
SELECT
SUBSTRING(pk, 6, 2)::INT AS _year
FROM
listing
WHERE
SUBSTRING(pk, 6, 2)::INT > 90
答案 1 :(得分:4)
试试这种方式
select * from (SELECT
SUBSTRING(pk, 6, 2)::INT AS _year
FROM
listing) a where _year>90