【问题标题】:ORDER BY - Identical valuesORDER BY - 相同的值
【发布时间】:2015-10-19 17:02:34
【问题描述】:

这是一个表格结构示例:

// tablename
+----+------+---------+
| id | numb |  color  | 
+----+------+---------+
| 1  | 4    | green   |
| 2  | 4    | yellow  |
| 3  | 3    | red     |
+----+------+---------+

这是一个查询示例:

SELECT id, numb, color FROM tablename ORDER BY numb asc

结果将是:

+----+------+---------+
| id | numb |  color  | 
+----+------+---------+
| 3  | 3    | red     |
| 1  | 4    | green   |
| 2  | 4    | yellow  |
+----+------+---------+

现在,我的焦点在这些行的顺序上:

| 3  | 4    | green   |
| 2  | 4    | yellow  |

因为它们的numb 值是相等的,现在我想知道,对于执行该查询的几个,它们会是不变的吗? (是否保证相同值的顺序?)或者没有任何保证,我应该在查询中使用另一个列名,例如 ORDER BY numb, id asc

【问题讨论】:

  • 没有。简单来说,没有保证。如果您希望按特定顺序退回商品,则应始终指定该顺序。
  • 你应该在订单中包含id

标签: mysql sql-order-by


【解决方案1】:

简答:不,不能保证。 (正如@Strawberry 在问题下所写)

完整答案:您可以添加一个名为sort_identical 的新列,然后随意填写。然后使用这个:

... ORDER BY numb, sort_identical asc

(您也可以使用id 而不是创建新列 - 但如果您需要对它进行不同于id 的排序,则创建一个新列)

+----+------+---------+----------------+
| id | numb |  color  | sort_identical |
+----+------+---------+----------------+
| 3  | 3    | red     | 1              |
| 1  | 4    | green   | 2              |
| 2  | 4    | yellow  | 3              |
+----+------+---------+----------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多