为什么 postgres 告诉我专栏 'airline' 不存在,而我知道它确实存在?



我正在对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

显然,这个专栏确实存在;我在最初的结果集中看到了它。我错过了什么?

因为不能在WHEREGROUP 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'

相关内容

最新更新