ORDER BY - 相同的值

时间:2015-10-19 17:02:35

标签: mysql sql-order-by

这是一个结构示例:

// 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

1 个答案:

答案 0 :(得分:0)

简答:不,不能保证。 (正如@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              |
+----+------+---------+----------------+