簡體   English   中英

ORDER BY輸出列的小寫

[英]ORDER BY lower case of output column

我可以毫無問題地運行這個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

有人可以告訴我一些這方面的問題嗎?

乍一看,您的第一個查詢可以這樣重寫:

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)

SELECT引用手冊頁

每個表達式可以是輸出列的名稱或序號(SELECT列表項),也可以是由輸入列值組成的任意表達式。

您試圖通過由輸出列形成的表達式進行排序,這是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM