Mysql 降序的 Order by 子句

Mysql Order by clause for decending order

参考我的

我在 order by 子句中附加了 M_id 以使其唯一排序。

我创建了一个 sqlfiddle:http://sqlfiddle.com/#!2/8f2340/3

现在我遇到 DESC 订购问题。

以下查询给出了预期的结果。

SELECT `M_ID`, `CON_FRST_NM` FROM `sample_table` order by `CON_FRST_NM` LIMIT 0,60

SELECT `M_ID`, `CON_FRST_NM` FROM `sample_table` order by `CON_FRST_NM`,`M_ID` LIMIT 0,60

SELECT `M_ID`, `CON_FRST_NM` FROM `sample_table` order by `CON_FRST_NM`,`M_ID` ASC LIMIT 0,60

SELECT `M_ID`, `CON_FRST_NM` FROM `sample_table` order by `CON_FRST_NM` DESC LIMIT 0,60

以下查询未给出预期结果。

SELECT `M_ID`, `CON_FRST_NM` FROM `sample_table` order by `CON_FRST_NM`,`M_ID` DESC LIMIT 0,60

请帮帮我。

谢谢。

据推测,您希望 order by 中第一个键上的 desc:

SELECT `M_ID`, `CON_FRST_NM`
FROM `sample_table`
ORDER BY `CON_FRST_NM` DESC, `M_ID`
LIMIT 0, 60;

您可以按不同的方向对不同的列进行排序。例如-

SELECT `M_ID`, `CON_FRST_NM`
FROM `sample_table`
ORDER BY `CON_FRST_NM` DESC, `M_ID` ASC
LIMIT 0, 60;

SELECT `M_ID`, `CON_FRST_NM`
FROM `sample_table`
ORDER BY `CON_FRST_NM` DESC, `M_ID` DESC
LIMIT 0, 60;

如果不指定方向,默认为ASC。因此,在您的查询中

SELECT `M_ID`, `CON_FRST_NM`
FROM `sample_table`
ORDER BY `CON_FRST_NM`, `M_ID` DESC
LIMIT 0, 60;

结果将首先按 CON_FRST_NM 升序排序,然后按 M_ID 降序排序。