【发布时间】:2022-01-23 14:03:57
【问题描述】:
我正在尝试对来自 PostgreSQL 课程的查询进行这种简单的修改。原来的工作正常,如下:
SELECT fl_date
,mkt_carrier AS airline
,mkt_carrier_fl_num AS flight
,origin
,dest
FROM performance
WHERE dest = 'ORD'
现在我要求只显示某个airline,而不是destination:
SELECT fl_date
,mkt_carrier AS airline
,mkt_carrier_fl_num AS flight
,origin
,dest
FROM performance
WHERE airline = 'UA'
..但它没有给出结果,而是返回以下内容:
ERROR: column "airline" does not exist
LINE 7: WHERE airline = 'UA'
^
SQL state: 42703
Character: 145
显然这个栏目确实存在;我在初始结果集中看到它。我错过了什么?
【问题讨论】:
-
在使用 PostgreSQL 时不能在条件中使用别名。您需要使用真实的参考资料。
-
该列不存在的原因是
where子句被处理之前特定的选择列及其别名被确定。因此,从 Postgres 的角度来看,列 airline 在处理 where 子句时不存在。所以很明显这个栏目不存在;
标签: postgresql