我能够运行此Postgres查询,没有任何问题:
select
(select product_types.name from product_types
where product_types.id = products.product_type_id) AS product_type_name
from products
order by product_type_name
但当我试图按小写字母排序时,它不起作用:
select
(select product_types.name from product_types
where product_types.id = products.product_type_id) AS product_type_name
from products
order by lower(product_type_name)
我得到这个错误:
ERROR: column "product_type_name" does not exist
LINE 4: order by lower(product_type_name)
^
********** Error **********
ERROR: column "product_type_name" does not exist
SQL state: 42703
Character: 156
有人能告诉我这件事吗?
2条答案
按热度按时间wnavrhmk1#
乍一看,您的第一个查询可以这样重写:
那么,使用
lower
函数进行排序就意味着只需将顺序更改为:8gsdolmq2#
引用
SELECT
上的手册页:每个表达式可以是输出列(
SELECT
列表项)的名称或序号,也可以是由输入列值组成的任意表达式。您试图按由output-列形成的表达式进行排序,但这是不可能的。