Mysql Order by子句降序排列

时间:2015-01-22 12:06:00

标签: mysql sql-order-by

参考我的previous question

我在我的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

请帮帮我。

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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降序排序。