2015-10-19 3 views
1

Вот таблица Пример структуры: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

Нет. Проще говоря, нет никакой гарантии. Если вам нужны элементы, возвращаемые в определенном порядке, то вы всегда должны указывать этот порядок. – Strawberry

+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    | 
+----+------+---------+----------------+ 
Смежные вопросы