Postgres按选择列排序

时间:2015-05-14 11:42:23

标签: postgresql

我想知道是否有一种简单的方法可以做这样的事情......

SELECT
    column_1,
    column_2,
    column_3,
    ...
    column_n
FROM my_table
ORDER BY
    column_1 ASC,
    column_2 ASC,
    column_3 ASC,
    ...
    column_n ASC;

但要使它更清洁如:

SELECT
    column_1,
    column_2,
    column_3,
    ...
    column_n
FROM my_table
ORDER BY SELECT LR ASC;

我知道这不起作用,但我希望这个想法有意义。从本质上讲,我是按顺序从左到右(LR)的顺序进行排序的表。

那里有这样的东西吗?或者这是一个愚蠢的想法?

2 个答案:

答案 0 :(得分:2)

ORDER BY的语法汇总在this manual page中。没有允许您在一个表达式中指定多个列的版本。

手册确实提到了,但没有给出“列数”的例子,这可以使生活更轻松一些。 ORDER BY 1表示“按SELECT列表中的第一列/表达式排序”,因此您可以这样写:

SELECT
    column_1,
    column_2,
    column_3,
    ...
    column_n
FROM my_table
ORDER BY
    1 ASC,
    2 ASC,
    3 ASC,
    ...
    column_n ASC;

所以你只需要知道列的 number ,而不是重复每个列的全名或表达。

答案 1 :(得分:0)