postgresql ORDER BY输出列的小写

pkwftd7m  于 2022-12-12  发布在  PostgreSQL
关注(0)|答案(2)|浏览(160)

我能够运行此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

有人能告诉我这件事吗?

wnavrhmk

wnavrhmk1#

乍一看,您的第一个查询可以这样重写:

select pt.name product_type_name from product_types pt
join products p on pt.id = p.product_type_id
order by pt.name

那么,使用lower函数进行排序就意味着只需将顺序更改为:

order by lower(pt.name)
8gsdolmq

8gsdolmq2#

引用SELECT上的手册页:
每个表达式可以是输出列(SELECT列表项)的名称或序号,也可以是由输入列值组成的任意表达式。
您试图按由output-列形成的表达式进行排序,但这是不可能的。

相关问题