我正在对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
显然,这个专栏确实存在;我在最初的结果集中看到了它。我错过了什么?
因为不能在WHERE
或GROUP BY
中使用列别名。你必须在WHERE
中使用真实的参考名称
SELECT fl_date
,mkt_carrier AS airline
,mkt_carrier_fl_num AS flight
,origin
,dest
FROM performance
WHERE mkt_carrier = 'UA'
您不能使用where、group by、。。。子句别名。使用真实列名
SELECT fl_date
,mkt_carrier AS airline
,mkt_carrier_fl_num AS flight
,origin
,dest
FROM performance
WHERE mkt_carrier = 'UA'