【问题标题】:Mysql Order by clause for decending orderMysql Order by 子句用于降序
【发布时间】:2015-01-22 12:06:00
【问题描述】:

参考我的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

请帮帮我。

谢谢。

【问题讨论】:

标签: mysql sql-order-by


【解决方案1】:

大概,您希望order by 的第一个键上的desc

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2012-08-08
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多