我有一张有几列的表。我已将“数字”列按顺序排序。但是更难的是,我想对'letter'和'id'列进行排序,作为基于第一列的二级排序。“name”列只跟在“id”列之后,没有排序。
我尝试了一些不同的查询,包括 ORDER BY number, letter, id
,但这显然是相对于“letter”列对“id”列进行排序,这不是我想要的。我还搜索了其他sql子句,它们可能有助于我对两个独立的列进行排序,但到目前为止,大多数答案都使用 ORDER BY
关键字。
最终结果如下:
排序前
期望结果
“letter”和“id”都作为第二排序独立排序,相对于第一列(“number”),而“name”紧跟在“id”列之后。
编辑:
有人可能会说 ORDER BY number, letter, id
可以,但实际上每列都是基于前面排序的列而不是第一列进行排序的。这是使用命令时的结果。
2条答案
按热度按时间tv6aics11#
你可以做:
u59ebvdq2#
您正在尝试将值按列而不是按行排序。这很奇怪,但是可以在sql中完成。其思想是按每列中的有序值进行枚举,然后将它们连接在一起:
我们可以枚举整个表(即不取
number
考虑到)。子查询按顺序排列number
首先,所以rn
给定值number
总是在同一范围内。