【发布时间】:2019-01-26 06:12:02
【问题描述】:
我有一个包含 2 列“id”和“name”的表。 id 是常规的自增索引,name 只是 varchar。
id name
1 john
2 mary
3 pop
4 mary
5 john
6 michael
7 john
8 will
我想像这样对搜索结果进行排序
8 will
7 john
5 john
1 john
6 michael
4 mary
2 mary
3 pop
ID 是 DESC,但所有重复的名称都归为一组。没关系,如果 ASC 更容易实现。如有必要,我可以在 PHP 中反转结果。
Regular ORDER BY name,id DESC 先对所有的名字排序,再对id的排序。那不是我想要的。我对名称的字母顺序不感兴趣。
我想要按 DESC 顺序排列的 id,如果有的话,按重名分组。
附言很抱歉,这是一个重复的问题。
【问题讨论】:
-
在您的结果 id 中是 not DESC
-
在 SQL 中
ORDER BY将通过一一比较结果行来对它们进行排序。由于您想要的结果中5 john的位置取决于7 john的位置,这将不起作用。我担心没有一个关系结构可以满足您的要求。 -
@Alma Do Mundo:你是对的。 ID 并不是按 DECS 顺序排列的。但是有一个全局DECS订单(8,7,6,4,3)和一组本地DECS订单(7,5,1)(4,2)
标签: mysql sql-order-by