我可以毫无问题地运行这个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
有人可以对此有所了解吗?
答案 0 :(得分:3)
乍一看,您的第一个查询可以这样重写:
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)
答案 1 :(得分:1)
每个表达式可以是输出列的名称或序号 (SELECT列表项),或者它可以是由...形成的任意表达式 输入列值。
您试图通过由输出列形成的表达式进行排序,这是不可能的。