为什么:SELECT (users.email) AS renamed_column FROM users ORDER BY lower(renamed_column) DESC
不起作用?
(错误列renamed_column不存在)
我没有被SELECT lower(users.email) AS renamed_column FROM users ORDER BY renamed_column DESC
强调,因为我希望原始值按较低的值排序。
PS:这是一个例子,事实上,'users.email'被一个子请求所取代。但是简单的字段或子请求存在问题。我不明白为什么带有重命名列的ORDER BY lower()失败。
答案 0 :(得分:1)
您提供的别名renamed_column
仅用于结果,并且只能在其他部分以有限的方式使用。 PostgreSQL documentation说明了ORDER BY
条款:
每个表达式可以是输出列的名称或序号(SELECT列表项),也可以是由输入列值组成的任意表达式。
因此它似乎可以ORDER BY renamed_column DESC
,因为它是输出列,但如果它是“任意表达式”,它必须使用输入列值
所以这样做的唯一方法是
SELECT (users.email) AS renamed_column FROM users ORDER BY lower(users.email) DESC
答案 1 :(得分:0)
试试这个:
SELECT (users.email) AS renamed_column FROM users ORDER BY lower((users.email)) DESC