powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / order by newId
9 сообщений из 9, страница 1 из 1
order by newId
    #32064431
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной из веток встретил следующее выражение.

Поясните, что это значит ?

В BOL сказано следующее:

order_by_expression

Specifies a column on which to sort. A sort column can be specified as a name or column alias (which can be qualified by the table or view name), an expression, or a nonnegative integer representing the position of the name, alias, or expression in select list.

Как я понял неотрицательное значение может указывать на имя в списке select. Но по newid мы получаем во первых не целое выражение, а во вторых значений newid гораздо больше, чем полей в списке select.

Заранее благодарен.
...
Рейтинг: 0 / 0
order by newId
    #32064449
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>or a nonnegative integer representing the position of the name in select list
Дословно: Неотрицательное целочисленное представление имени (поля) в выборке.
Т.е.
Select id, name, description
from TableName
Order By 2

Это тоже самое что и

Select id, name, description
from TableName
Order By name

Это уже только проблемы перевода с английского. Могу порекомендовать т.н. "правило ряда": Если идет подряд несколько существительных, то последнее переводится как существительное, а остальные как прилагательные к нему.
...
Рейтинг: 0 / 0
order by newId
    #32064453
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Дословно: Неотрицательное целочисленное представление имени (поля) в выборке.

Это я понял.

Смущает следующее - select newId() возвращает далеко не неотрицатильное целочисленное выражение, а uniqueidentifier.

И мне непонятно, как соотнести то, что вы мне описали с данным фактом.
...
Рейтинг: 0 / 0
order by newId
    #32064561
Фотография Гнездин Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда в ORDER BY указана целочисленная константа, она означает порядковый номер колонки, указанной в SELECT.
То есть ORDER BY 2 означает сортировать выборку по значению второй колонки.
Например,
Код: plaintext
1.
2.
SELECT a, b, c, (a+b+c)
FROM mytable
ORDER BY  4 

позволит сортировать по значению 4-й колонки в выборке, даже если ей не присвоено какое-то имя:
SELECT a, b, c, (a+b+c) AS d....
...
Рейтинг: 0 / 0
order by newId
    #32064618
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин.

Неужели я настолько плохо выражаю свои мысли :)

То что вы мне написали я знаю.

Теперь если я делаю запрос:

select newid() я получаю случайное выражение вида:

DF90B464-C3B2-4D52-B8C6-344448046EE9

Кажется это называется GUID (хотя, честно говоря не уверен).

Теперь если я говорю:

select * from Table order by newid()

по какому столбцу я сортирую ?
...
Рейтинг: 0 / 0
order by newId
    #32064622
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По виртуальному столбцу, который создаст сам сервер
...
Рейтинг: 0 / 0
order by newId
    #32064623
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по "виртуальному"....
фактически newid() вызывается для каждой строки набора
а потом по этому же полю сортируется....
вот два запрса делающие оно и то же...
select * from table order by newid()
select newid() ,* from table order by 1
...
Рейтинг: 0 / 0
order by newId
    #32064628
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> фактически newid() вызывается для каждой строки набора
а потом по этому же полю сортируется....

Спасибо. Понял.

Получается, что можно делать даже такие вещи:

select a,b from table order by f(a,b)
...
Рейтинг: 0 / 0
order by newId
    #32064632
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага.... соображаеш... ;)))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / order by newId
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]