如何使用 sql 中的 2 列进行排序

How to Order by with 2 column in sql

这是样本table

name | group
 a   |   2
 b   |   1
 c   |   1
 d   |   2
 e   |   4
 f   |   3
 g   |   4

如何对名称为 asc 和组为 asc 的数据进行排序 table

name | group
 a   |   2
 d   |   2
 b   |   1
 c   |   1
 e   |   4
 g   |   4
 f   |   3

我已经试过了

select * from table order by name asc, group asc

结果和我的预期不一样

我想你想要:

SELECT *
FROM yourTable
ORDER BY "group" DESC, name;

也就是说,您想要首先按 groupdescending 排序,然后按 [=12] ascending =] 列。请注意,默认排序顺序是升序,因此通常我们不写 ASC。此外,GROUP 是保留的 SQL 关键字,您应该避免使用此名称命名您的列。

您似乎想按 排序,但要根据组中的名字排序。您可以使用 window 函数:

order by min(name) over (partition by group) asc,
         group asc,
         name

请注意,group 是一个非常糟糕的列名称,因为它是一个 SQL 关键字。您可能应该为该列使用不同的名称。

Here 是一个 db<>fiddle.