TSQL, Заказ ORDER BY - PullRequest
       1

TSQL, Заказ ORDER BY

2 голосов
/ 18 октября 2010

При условии таблицы

Name   Age
Bob    30
Paul   35
John   35

и оператора

select * from table ORDER BY Age DESC

Каков порядок расположения в таблице?

Name   Age
Paul   35
John   35
Bob    30

или

Name   Age
John   35
Paul   35
Bob    30

или неопределенное поведение?

Ответы [ 4 ]

7 голосов
/ 18 октября 2010

Гарантируется, что Bob будет последней строкой набора результатов.Относительное упорядочение других строк не гарантируется никоим образом.

Если вам нужно упорядоченное упорядочение, вам необходимо четко указать это.Например:

SELECT *
FROM table
ORDER BY age DESC,
         name ASC
2 голосов
/ 18 октября 2010

ORDER BY Age DESC, Name [ASC|DESC]

Если вы пропустите предложение ORDER BY, оптимизатор примет решение за вас. По моему опыту, это обычно , однако данные располагаются на диске. Если существует кластерный индекс (обычно первичный ключ), это будет его порядок. Однако , как отметил @Martin, это не гарантируется. Если вы хотите конкретный заказ, укажите его.

0 голосов
/ 18 октября 2010

Результат, наконец, находится не в каком-либо определенном или гарантированном порядке, в котором вы можете ожидать результаты.

0 голосов
/ 18 октября 2010
select * from table 
ORDER BY Age DESC , name asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...