【问题标题】:How to order the table data with double condition order in mysql如何在mysql中以双条件顺序对表数据进行排序
【发布时间】:2020-12-14 07:26:33
【问题描述】:

我有这样的桌子:

+-------------+------------+
+    my_id    +    name    +
+-------------+------------+
+      1      +    Adam    +
+-------------+------------+
+      2      +    Udin    +
+-------------+------------+
+      3      +    Asep    +
+-------------+------------+
+      4      +   Jarwo    +
+-------------+------------+
+      5      +  Bambang   +
+-------------+------------+

然后我想只显示我的数据有一个最新的 id 并将我的数据限制为 3 行,如下所示:

+-------------+------------+
+    my_id    +    name    +
+-------------+------------+
+      5      +   Bambang  +
+-------------+------------+
+      4      +   Jarwo    +
+-------------+------------+
+      3      +   Asep     +
+-------------+------------+

问题是我想再次将我的数据排序到按名称升序的字段中,并且当我在按降序对我的 id 进行排序后插入 order by 查询时不起作用并且我的数据没有按名称排序,对于我的查询代码像这样:

SELECT tables.my_id, tables.name
FROM tables
ORDER BY tables.my_id DESC, tables.name ASC
LIMIT 3

当我按降序对我的 id 进行排序时,结果仍然与我的代码相同,我的期望是这样的:

+-------------+------------+
+    my_id    +    name    +
+-------------+------------+
+      3      +    Asep    +
+-------------+------------+
+      5      +   Bambang  +
+-------------+------------+
+      4      +   Jarwo    +
+-------------+------------+

那么我的代码有什么问题?谢谢之前

【问题讨论】:

    标签: mysql


    【解决方案1】:
    1. 别名“tables”未定义
    2. tables.my_id + 0;什么都不做
    3. 我理解的ID是唯一的;所以第二种是行不通的
    SELECT * FROM (
      SELECT my_id, tables.name
      FROM occupants
      ORDER BY my_id DESC
      LIMIT 3
    ) t
    ORDER BY t.name ASC
    

    【讨论】:

    • 抱歉先生让您错过了对我的问题的理解,我已经编辑了我的问题,感谢您的反馈,我会先尝试我的代码
    • @LuckALip 我想你不明白在多列的情况下排序是如何工作的;如果您按 my_id 排序,那么命名只会对具有相同 my_id 的名称进行排序
    • @LuckALip 如果您仍然不明白,我们可以讨论这个问题
    • 先生如何以及在哪里?
    • @LuckALip:您的问题不是按多列排序。按多列排序可能如下所示:order by name, id,这意味着:首先按名称排序,对于具有相同名称的行,按 id 进一步排序。您的问题是您想按一种排序顺序进行限制并按另一种排序顺序显示结果。不幸的是,这只能通过如下所示的两个步骤进行:按一个排序键排序并应用LIMIT。然后从此结果中选择并按其他排序键排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多