这是一个表结构示例:
// 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
?
答案 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 |
+----+------+---------+----------------+