下排序重命名列
Lower sort renamed column
为什么这个: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() 失败。
试试这个:
SELECT (users.email) AS renamed_column FROM users ORDER BY lower((users.email)) DESC
您提供的别名renamed_column
仅用于结果,在其他部分只能以有限的方式使用。 PostgreSQL documentation 关于 ORDER BY
子句的陈述:
Each expression can be the name or ordinal number of an output column (SELECT list item), or it can be an arbitrary expression formed from input-column values.
所以看起来ORDER BY renamed_column DESC
是可以的,因为它是一个输出列,但是如果它是一个"arbitrary expression",它必须使用输入列值.
所以唯一的方法是
SELECT (users.email) AS renamed_column FROM users ORDER BY lower(users.email) DESC
为什么这个: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() 失败。
试试这个:
SELECT (users.email) AS renamed_column FROM users ORDER BY lower((users.email)) DESC
您提供的别名renamed_column
仅用于结果,在其他部分只能以有限的方式使用。 PostgreSQL documentation 关于 ORDER BY
子句的陈述:
Each expression can be the name or ordinal number of an output column (SELECT list item), or it can be an arbitrary expression formed from input-column values.
所以看起来ORDER BY renamed_column DESC
是可以的,因为它是一个输出列,但是如果它是一个"arbitrary expression",它必须使用输入列值.
所以唯一的方法是
SELECT (users.email) AS renamed_column FROM users ORDER BY lower(users.email) DESC